收藏 分销(赏)

东华理工大学单片机实验程序.doc

上传人:精*** 文档编号:4521997 上传时间:2024-09-26 格式:DOC 页数:24 大小:86.50KB 下载积分:10 金币
下载 相关 举报
东华理工大学单片机实验程序.doc_第1页
第1页 / 共24页
东华理工大学单片机实验程序.doc_第2页
第2页 / 共24页


点击查看更多>>
资源描述
东华理工大学单片机实验程序 实验一:片内RAM30H开始的N个字节的内容送到片外RAM2000H开始的单元中,数据块长度存在2F单元中 ORG 0000H SJMP MAIN ORG 0030H MAIN:MOV R0,#30H MOV DPTR,#2000H LOOP:MOV A,@R0 MOVX @DPTR,A INC R0 INC DPTR DJNZ 2FH,LOOP SJMP $ END 二、编程将片外RAM1000H开始的N个单元的内容送到片外RAM2050H开始的单元,N为数据块的长度,存放在片内RAM2FH单元中 ORG 0000H LJMP MAIN ORG 0030H MAIN:MOV DPTR,#1000H MOV P2,#20H MOV R0,#50H LOOP:MOVX A,@DPTR MOVX @R0,A INC DPTR INC R0 DJNZ 2FH ,LOOP SJMP $ END 三、查表程序 X 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Y 0 1 5 15 16 18 19 21 26 33 32 30 13 11 8 ORG 0000H SJMP MAIN ORG 0030H MAIN:MOV A,20H MOV DPTR,#TAB MOVC A,@A+DPTR MOV 21H,A SJMP $ TAB:DB 0,1,5,15,16,18,19,21 DB 26,33,32,30,13,11,8 END 四、连加程序 MAIN:MOV R0,#30H MOV R1,#60H MOV R2,#30H ACALL SUM SJMP $ SUM:PUSH PSW MOV @R1,#0 INC R1 MOV @R1,#0 DEC R1 LOOP:MOV A,@R0 ADD A,@R1 MOV @R1,A INC R1 MOV A,@R1 ADDC A,#0 MOV @R1,A DEC R1 INC R0 DJNZ R2,LOOP POP PSW RET END 实验二 多字节数乘法和除法 1.编写一个双字节数乘以单字节数的程序,实现(R4)(R3)×(R2) →(R4)(R3)(R2)。并验证: BBFFH×BBH,3FFFH×A2H,FFFFH×0AH MOV A,R3 MOV B,R2 MUL AB MOV R5,A MOV R6,B MOV A,R4 MOV B,R2 MUL AB ADD A,R6 MOV R6,A MOV A,B ADDC A,#00H MOV R7,A RET END 2.编写一个双字节数除以单字节数的程序,实现(R7)(R6) ÷(R5) →(R5)(R6) …(R7)。并验证: BBFFH÷BBH,3FFFH÷A2H,FFFFH÷0AH DIVP:MOV A,R7 MOV B,R5 DIV AB MOV 30H,A MOV R7,B LCALL DIVPI MOV R5,30H RET DIVPI:MOV R2,#8 LOOP:CLR C MOV A,R6 RLC A MOV R6,A MOV A,R7 RLC A MOV R7,A MOV F0,C CLR C SUBB A,R5 ANL C,/F0 JC NEXT INC R6 MOV R7,A NEXT:DJNZ R2,LOOP RET END 实验三 数制转换 1.编写一个双字节二进制数转换成BCD码数的程序。已知双字节数存放在R3、R2中,转换结果从高位到低位依次放入片内RAM44H~40H单元中。并验证: 5678H、3A5CH、FF00H的转换结果 BTOBCD:CLR A MOV 52H,A MOV 51H,A MOV 50H,A MOV R1,#16 LOOP:CLR C MOV A,R6 RLC A MOV R6,A MOV A,R7 RLC A MOV R7,A MOV A,50H ADDC A,50H DA A MOV 50H,A MOV A,51H ADDC A,51H DA A MOV 51H,A MOV A,52H ADDC A,52H DA A MOV 52H,A DJNZ R1,LOOP SJMP $ END 实验四 并行口的应用 P1.4~P1.5接两个按钮开关,P1.0~P1.1接两个发光二极管L1、L2,编写一个程序实现模拟汽车转弯灯控制。 P1.5 P1.4 状 态 1 1 L1、L2全灭 1 0 左转灯闪(L1以1Hz的频率闪烁) 0 1 右转灯闪(L2以1Hz的频率闪烁) 0 0 双闪(L1、L2同时以1Hz的频率闪烁) ORG 0000H SJMP MAIN ORG 0030H MAIN:MOV A,P1 SWAP A ANL A,#03H CJNE A,#00H,L1 SETB P1.0 CPL P1.1 MOV C,P1.1 MOV P1.0,C ACALL DEL SJMP MAIN L1:CJNE A,#01H,L2 SETB P1.0 CPL P1.1 ACALL DEL SJMP MAIN L2:CJNE A,#02H,L3 SETB P1.1 CPL P1.0 ACALL DEL SJMP MAIN L3:SETB P1.0 SETB P1.1 SJMP MAIN DEL: MOV R7,#5 DEL1:ACALL DELAY DJNZ R7,DEL1 RET DELAY:MOV R2,#200 LOOPS:MOV B,#248 NOP DJNZ B,$ DJNZ R2,LOOPS RET END 实验六 定时器/计数器及中断的使用 实验电路如右图所示。要求采用定时器/计数器中断方式编程实现八只发光二极管的如下显示方式: 第一秒L1、L3亮,第二秒L2、L4亮,第三秒L5、L7亮,第四秒L6、L8亮,第五秒L1、L3、L5、L7亮,第六秒L2、L4、L6、L8亮,第七秒全亮,第八秒全灭。第九秒以后又从头开始,一直循环下去。 ORG 0000H SJMP MAIN ORG 000BH SJMP TMOO ORG 0030H MAIN:MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H SETB ET0 SETB EA MOV R2,#20 MOV R3,#00 MOV DPTR,#TAB SETB TR0 SJMP $ TMOO:MOV TH0,#3CH MOV TL0,#0B0H DJNZ R2,EXIT MOV A,R3 MOVC A,@A+DPTR MOV P1,A MOV R2,#20 INC R3 CJNE R3,#08,EXIT MOV R3,#00 EXIT:RETI TAB: DB 0FAH,0F5H,0AFH,5FH DB 0AAH,55H,00,0FFH END 实验七 静态显示程序 ORG 0000H MOV SCON,#00 MOV DPTR,#TAB MOV R0,#30H MOV R7,#02 LOOP:MOV A,@R0 ANL A,#0FH MOVC A,@A+DPTR MOV SBUF,A JNB TI,$ CLR TI MOV A,@R0 SWAP A ANL A,#0FH MOVC A,@A+DPTR MOV SBUF,A JNB TI,$ CLR TI INC R0 DJNZ R7,LOOP RET TAB:DB 11H,0D7H,98H,92H DB 56H,32H,30H,97H DB 10H,12H,14H,70H DB 39H,0D0H,38H,3CH END 静态显示自增一 (1) ORG 0000H SJMP MAIN ORG 000BH SJMP TMOO ORG 0030H MAIN:MOV 30H,#34H MOV 31H,#12H MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H MOV R2,#020 SETB ET0 SETB EA SETB TR0 SJMP $ TMOO:MOV TH0,#3CH MOV TL0,#0B0H DJNZ R2,EXIT INC 30H MOV A,30H CJNE A,#00H,TMO1 INC 31H TMO1:ACALL DIS EXIT:RETI DIS:MOV SCON,#00 MOV DPTR,#TAB MOV R0,#30H MOV R7,#02 LP2:MOV A,@R0 ANL A,#0FH MOVC A,@A+DPTR MOV SBUF,A JNB TI,$ CLR TI MOV A,@R0 SWAP A ANL A,#0FH MOVC A,@A+DPTR MOV SBUF,A JNB TI,$ INC R0 DJNZ R7,LP2 RET TAB:DB 11H,0D7H,98H,92H DB 56H,32H,30H,97H DB 10H,12H,14H,70H DB 39H,0D0H,38H,3CH END (2) ORG 0000H SJMP MAIN ORG 000BH SJMP CTOP ORG 0030H MAIN: MOV 30H,#21H MOV 31H,#43H MOV 32H,#10 MOV TMOD,#01 MOV TL0,#0B0H MOV TH0,#3CH SETB TR0; 启动定时器T0 MOV IE,#82H; ET0为1,定时器0允许中断 SJMP $ CTOP: MOV TL0,#0B0H MOV TH0,#3CH DJNZ 32H,RET1 MOV 32H,#10 INC 30H MOV A,30H CJNE A,#0,A1 INC 31H A1: MOV A,30H ANL A,#0FH MOV 50H,A MOV A,30H ANL A,#0F0H SWAP A MOV 51H,A MOV A,31H ANL A,#0FH MOV 52H,A MOV A,31H ANL A,#0F0H SWAP A MOV 53H,A DISP: MOV R2,#04 MOV R0,#50H MOV DPTR,#TAB LP0: MOV A,@R0 MOVC A,@A+DPTR MOV SBUF,A JNB TI,$ CLR TI INC R0 DJNZ R2,LP0 RET1: RETI TAB: DB 11H,0D7H,98H,92H DB 56H,32H,30H,97H DB 10H,12H,14H,70H DB 39H,0D0H,38H,3CH END 实验八 动态显示程序 编写一动态显示程序。要求:将片内RAM33H~30H单元中的数显示出来。 ORG 0000H LP3: MOV R0,#30H MOV R6,#0DFH MOV R7,#03 MOV DPTR,#TAB CLR P2.0 CLR P2.1 LP0: CLR A MOV A,@R0 ANL A,#0FH MOVC A,@A+DPTR MOV P0,A SETB P2.0 CLR P2.0 MOV P0,#00 MOV A,R6 MOV P0,A SETB P2.1 CLR P2.1 RR A MOV R6,A DEL0: MOV R5,#250 LP1: NOP NOP DJNZ R5,LP1 CLR A MOV A,@R0 ANL A,#0F0H SWAP A MOVC A,@A+DPTR MOV P0,A SETB P2.0 CLR P2.0 MOV P0,#00 MOV A,R6 MOV P0,A SETB P2.1 CLR P2.1 RR A MOV R6,A INC R0 DEL1: MOV R5,#250 LP2: NOP NOP DJNZ R5,LP2 DJNZ R7,LP0 SJMP LP3 TAB: DB 77H,44H,3EH,6EH,4DH,6BH,7BH,46H,7FH,6FH,5FH,79H,33H,7CH,3BH,1BH END 实验九 键盘显示程序 编写一键盘显示程序。要求:对矩阵键盘进行判键,并采用动态显示,将键码按计算器显示模式进行显示。 ORG 0000H KPIN: MOV P1,#0F0H ;行线低4位输出低电平 MOV A,P1 ;从高4位读取列线值 ANL A,#0F0H ;屏蔽低4位获得列线值 MOV B,A ;暂存列线值 MOV P1,#0FH ;列线高4位输出低电平 MOV A,P1 ;从低4位读取行线值 ANL A,#0FH ;屏蔽高4位获得行线值 ORL A,B ;行、列值合并,得到按键特征码 CJNE A,#0FFH,KPIN1 ;判断有按键否 MOV 30H,#0FFH ACALL DISP AJMP EXIT ;与0FFH相等,无按键,重新扫描 KPIN1: MOV B,A ;有按键,把特征码暂存→B MOV DPTR,#TABKP ;DPTR指向键码表首地址 MOV R3,#0 ;顺序码初始化 KPIN2: MOV A,R3 ;按顺序码查表 MOVC A,@A+DPTR CJNE A,B,KPIN3 ;按键特征码与查表特征码比较 MOV A,R3 ;相等,顺序码有效,得到键码→A CJNE A,30H,DHJ SJMP DK DHJ: MOV 30H,R3 MOV 55H,54H MOV 54H,53H MOV 53H,52H MOV 52H,51H MOV 51H,50H MOV 50H,A DK: ACALL DISP AJMP EXIT KPIN3: INC R3 ;不相等,调整顺序码,准备查下一个 CJNE A,#0FFH,KPIN2 ;是否为表格结束标志 EXIT: SJMP KPIN ;是,重新扫描 DISP: MOV DPTR,#TAB MOV R1,#0DFH MOV R0,#50H MOV R2,#06 CLR P2.0 CLR P2.1 LOOP:MOV A,@R0 ANL A,#0FH MOVC A,@A+DPTR MOV P0,A SETB P2.0 NOP CLR P2.0 LOOP1:MOV A,R1 MOV P0,A SETB P2.1 ACALL DEL CLR P2.1 RR A MOV R1,A INC R0 DJNZ R2,LOOP RET DEL:MOV R5,#04 ;延时2ms LOOP2:MOV B,#248 NOP DJNZ B,$ DJNZ R5,LOOP2 RET TABKP: DB 0EEH,0DEH,0BEH,7EH,0EDH,0DDH,0BDH,7DH,0EBH DB 0DBH,0BBH,7BH,0E7H,0D7H,0B7H,77H,67H,0FFH TAB: DB 77H,44H,3EH,6EH,4DH,6BH,7BH,46H,7FH,6FH,5FH DB 79H,33H,7CH,3BH,1BH END
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服