汇编语言单片机实验.doc
《汇编语言单片机实验.doc》由会员分享,可在线阅读,更多相关《汇编语言单片机实验.doc(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件实验一 数据传送一、实验目的1熟悉KEIL软件的程序调试方法2掌握从外部数据存储器传送到内部存储器的指令3掌握算术运算指令二、实验内容本实验为软件实验:数据传送实验。这个实验包括两个小实验:1.从外部数据存储器传送到内部RAM中;2.求16个学生的年龄之和,数据存放在20H单元中。此实验均可在脱机模拟状态下调试运行,也可以连接上仿真器与实验箱在线仿真运行。1从外部数据存储器传送到内部RAM中本实验在程序编译之前,将外部数据存储器(XDATA)和内部数据存储器(DATA)窗口打开,并在XDATA窗口在0000H、0001单元分别键入54H、55H。然后程序单步运行或全速运行,观察寄存器A,B
2、,DPTR,R1,R2,R3的值是不是如程序所希望的那样变化,最后看R3的值是不是54H+55H=A9H。实验源程序如下: ORG 00H AJMP START ORG 30HSTART: MOV A, #56H MOV B, #78H MOV DPTR, #00H MOVX A, DPTR MOV R1, A INC DPTR MOVX A, DPTR ADD A, R1 MOV R3, AHERE: AJMP HERE END2求16个学生的年龄之和程序运行前,先将16个学生的年龄放在内部数据区20H单元开始的地方,码制为BCD码,程序运行结束时,16个学生的年龄和放在寄存器A和B中(B为
3、高位,A为低位)。实验源程序如下: ORG 00H AJMP START ORG 30HSTART: MOV R0, #20H MOV R7, #16 MOV A, #00H MOV B, ALOOP: ADD A, R0 DA A JNC NEXT INC BNEXT: INC R0 DJNZ R7, LOOPHERE: SJMP HERE END三、实验步骤1.运行KEIL软件2.新建项目 project/new project/3.保存项目 选择保存项目的名称和位置 如abc.uv2 选择单片机的CPU型号 如atmel公司的 89c524.新建源文件 file/new 5.输入源程序6
4、.保存源文件 file/save as 选择保存的名称和位置,如abc.a517.将源文件加入项目中 source group 1 右键 选择“add file to group” 选择源文件 点击确定8.编译项目 rebuild all target files9.调试程序 单击start/stop debug session 进入程序调试状态10.单步执行程序,或者全速、断点执行程序 debug/step(go)11.查看执行结果 view/memory window address d:00h 内部RAM X:0000H 外部RAM C:0000H ROM 可以查看相应存储器内的内容 或
5、者选择 view/watcha and call stack window 查看相应变量内容12.给相应单元赋值,并执行程序,记录执行结果,写出实验报告。给相应单元赋值方法:鼠标移动到相应单元,点击鼠标右键选择modify memory value输入新值。13.记录实验中遇到的问题和解决方法。软件实验二 排序/数制转换一、实验目的1熟练使用KEIL软件调试程序2掌握查询指令和循环程序的设计方法3掌握数据转换的程序设计方法4掌握有关循环程序和数据转换的程序的调试二、实验内容 1求8个无符号数的最大值给定8个无符号数,将其放内部数据区(DATA)中,地址从20H开始,运行下列程序,看看是否将8个
6、数的最大值存储在A寄存器和内部数据区41H单元中。程序清单如下: ORG 00H SJMP START ORG 30HSTART: MOV R0, #20H MOV R6, #08H MOV A, R0 DEC R6LOOP: INC R0 MOV 40H,R0 CJNE A, 40H, CHK JMP DD1CHK: JNC SQMOV A, 40HSQ: DJNZ R6, LOOPDD1: MOV 41H, AHERE: SJMP HERE END附加功能:编程实现内部RAM20H-27H单元八个数从小到大排序2将一个字节BCD码转换成二进制数将R2 中的内容转换成二进制数据,并传送到20
7、H 单元中。程序清单如下: ORG 00H AJMP START ORG 30HSTART: MOV R2, #99H ACALL DTOBHERE: SJMP HEREDTOB: MOV A, R2 ANL A, #0F0H SWAP A MOV B, #10 MUL AB MOV R3, A MOV A, R2 ANL A, #0FH ADD A, R3 MOV R3, A MOV 20H, A RET三、实验步骤要求:写出实验步骤并记录程序调试结果。硬件实验一 并行口的使用一、 实验目的1 熟悉单片机仿真实验箱XL600+使用方法2 学会使用XLISP向单片机烧录程序3 学会单片机并行口
8、的使用方法二、 实验内容使用单片机的并行口P1接8路LED灯,通过程序控制轮流点亮8个灯。为0时灯亮,为1时灯灭。参考程序:ORG 0000H JMP MAIN ORG 0030H;*MAIN: MOV A,#0FEH ;赋初始值LOOP: MOV R0,#07H ;移动次数LOOPL: MOV P0,A MOV P2,A RL A ;左移 CALL DELAY DJNZ R0,LOOPL MOV R0,#07H ;移动次数LOOPR: MOV P0,A MOV P2,A RR A ;右移 CALL DELAY DJNZ R0,LOOPR JMP LOOP;*DELAY: MOV R6,#0F
9、FH DEL: MOV R7,#0FFH DJNZ R7,$ DJNZ R6,DEL RETEND 三、 实验连线P1(JP44)-八路指示灯(JP32)四、 实验步骤1、 按下实验箱的电源开关,使得实验箱接通电源,此时实验箱XL600+上指示灯闪烁显示3次后熄灭。2、 连接实验连线 P1(JP44)-八路指示灯(JP32)3、 新建项目,新建文件,输入源程序,编译程序,生成*.hex文件。方法:在编译时选择project/options for target target1在生成hex前打“勾”,然后编译程序,编译成功后*.hex跟源程序在同一位置。4、 烧录程序方法:(1)打开lisp软件
10、 (2)操作/检测编程器 显示编程器检测OK字样,表示编程器当前处于正常工作状态。 (3)打开*.hex文件 (4)选择智能一键通,完成*.hex文件烧录 5、烧录完成后,单片机自动执行程序,此时八路指示灯轮流点亮。如果不能正常显示请修改程序,直到能够正确显示实验现象。6、记录实验中遇到的问题及解决方案硬件实验二 定时计数器的使用一、 实验目的1 学习定时计数器的编程使用2 学习8位数码管的编程使用3 再次熟悉单片机仿真实验箱XL600+使用方法二、实验内容编程使用单片机的定时计数器定时1s钟,并通过8位数码管显示当前秒表的时间,分辨率为0.01s,控键K01第一次按下时, 启动开始计时,第二
11、次按下时, 停止计时,第三次按下时, 归零。三、 实验连线p0口-数码管数据线(JP5)p2口-数码管显示位控制(JP8)p3.2口-控制按键K01(JP37.0)实验参考程序见编程实例F:单片机编程实例电子钟.计数器数码管8位秒表计时;* - 秒单位 - 数码管端口 - 缓冲区 - 计时BCD码值寄存器 *;* 十万位 P20 dis_buf7 sec_bcd7 *;* 万位 P21 dis_buf6 sec_bcd6 *;* 千位 P22 dis_buf5 sec_bcd5 *;* 百位 P23 dis_buf4 sec_bcd4 *;* 十位 P24 dis_buf3 sec_bcd3
12、*;* 个位(1.s) P25 dis_buf2 sec_bcd2 *;* 十分位(0.1s) P26 dis_buf1 sec_bcd1 *;* 百分位(0.01s) P27 dis_buf0 sec_bcd0 *CODE_SEG SEGMENTCODEDATA_SEG SEGMENT DATA STACK_SEGSEGMENTIDATARSEG DATA_SEGKEY_S: DS 1KEY_V: DS 1DIS_DIGIT: DS 1DIS_INDEX: DS 1SEC_BCD: DS 8; 秒计数值, BCD码KEY_TIMES: DS 1; K1 按下次数DIS_BUF: DS 8;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 单片机 实验
限制150内