收藏 分销(赏)

51单片机常见汇编程序实验代码.doc

上传人:快乐****生活 文档编号:3066322 上传时间:2024-06-14 格式:DOC 页数:13 大小:66KB
下载 相关 举报
51单片机常见汇编程序实验代码.doc_第1页
第1页 / 共13页
51单片机常见汇编程序实验代码.doc_第2页
第2页 / 共13页
51单片机常见汇编程序实验代码.doc_第3页
第3页 / 共13页
51单片机常见汇编程序实验代码.doc_第4页
第4页 / 共13页
51单片机常见汇编程序实验代码.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

1、1. 将片外8000H-80FFH单元写入数据AB12. 将片内RAM20H单元中数据在数码管上显示出来13. 将片内ARM30H-40H单元清零24. 将六位数显示在数码管上25. 8255并口芯片的应用:交通灯控制系统的设计36. 将交通灯点亮37. AD转换实验48. DA转换实验59. 定时器的应用510. 开关控制LED的亮灭及速度611. 计数器实验612. 串并转换实验713. 直流电机速度检测714. 8255PB外接8个开关,编程将开关状态显示在数码管上(串并转换动态扫描方式)815. P3.4接开关K,编程将开关拨动次数,通过串并转换的方式进行显示916. 比较片内RAM3

2、0H、31H两个单元值的大小,将较大的数显示在数码管上1017. 单片机P1口接8个开关,编程将开关状态显示在数码管上(串并转换动态扫描方式)1018. 将片内50H单元的值显示在数码管上1119. 开关K1接P1.0,K2接P1.1,编程实现当按下K1时在数码管上显示50H单元的值,按下K2在数码管上显示51H单元的值121. 将片外8000H-80FFH单元写入数据ABORG 0000H ;程序从0000H开始执行AJMP MAIN ;跳转到主程序ORG 0030H ;以免覆盖中断地址MAIN:MOV SP,#60H; 避免堆栈和工作寄存器区冲突MOV DPTR,#8000HMOV R0,

3、#0LOOP:MOV A,#0ABHMOVX DPTR,AINC DPTRINC R0CJNE R0,#0,LOOP; 判断AJMP $; 等待END ;调试-视图-M存储器(输入地址X:8000H)2. 将片内RAM20H单元中数据在数码管上显示出来 ORG 0000H;程序从0000H开始执行AJMP MAIN;跳转到主程序ORG 0030H;以免覆盖中断地址MAIN:MOV SP,#60H ;避免堆栈和工作寄存器区冲突MOV DPTR,#0E100H ;指向命令口地址MOV A,#03H;PA、PB口输出MOVX DPTR,A;所有并口显示程序先进行8155初始化MOV 20H,#34H

4、MOV A,20HACALL CHAILOOP:MOV R0,#10H ;第一个显示数的地址送R0MOV R1,#2 ;显示2个数MOV R2,#1 ;从倒数第一个数码管开始显示ACALL DISPLAYLJMP LOOP;判断CHAI:MOV B,#10HDIV ABMOV 10H,BMOV 11H,ARETDISPLAY:MOV A,R0 MOV 0FH,#8ACALL P164ACALL PBITACALL DELAYMOV A,#0MOVX DPTR,AINC R0DJNZ R1,DISPLAYRETP164:MOV DPTR,#TAB MOVC A,A+DPTRP164_1:RRC

5、A MOV R3,AMOV ACC.0,CANL A,#0FDHMOV DPTR,#0E102HMOVX DPTR,AORL A,#0FEHMOVX DPTR,AMOV A,R3DJNZ 0FH,P164_1MOV 0FH,#8RETPBIT:MOV DPTR,#0E101H MOV A,R2 MOVX DPTR,ARL AMOV R2,ARETDELAY:MOV R6,#4DEL:MOV R7,#250 DJNZ R7,$DJNZ R6,DELRETTAB:DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H DB 0FEH,0F6H,0EEH,3EH,9CH,7

6、AH,9EH,8EHEND3. 将片内ARM30H-40H单元清零 ORG 0000H;程序从0000H开始执行AJMP MAIN;跳转到主程序ORG 0030H;以免覆盖中断地址MAIN:MOV SP,#60H ;避免堆栈和工作寄存器区冲突MOV R0,#30HMOV A,#0LOOP:MOV R0,AINC R0CJNE R0,#41H,LOOP;判断AJMP $;等待END ;地址D:30H4. 将六位数显示在数码管上 ORG 0000H;程序从0000H开始执行AJMP MAIN;跳转到主程序ORG 0030H;以免覆盖中断地址MAIN:MOV SP,#60H ;避免堆栈和工作寄存器区

7、冲突MOV DPTR,#0E100H ;指向命令口地址MOV A,#03H ;PA、PB口输出MOVX DPTR,A ;所有并口显示程序先进行8155初始化LOOP:MOV R0,#10H ;第一个显示数的地址送R0MOV 10H,#0HMOV 11H,#3HMOV 12H,#1HMOV 13H,#2HMOV 14H,#1H MOV 15H,#1H MOV R1,#6 ;显示6个数 MOV R2,#1;从倒数第一个数码管开始显示 ACALL DISPLAY LJMP LOOPDISPLAY:MOV A,R0 MOV 0FH,#8ACALL P164ACALL PBITACALL DELAYMO

8、V A,#0MOVX DPTR,AINC R0DJNZ R1,DISPLAYRETP164:MOV DPTR,#TAB MOVC A,A+DPTRP164_1:RRC A MOV R3,AMOV ACC.0,CANL A,#0FDHMOV DPTR,#0E102HMOVX DPTR,AORL A,#0FEHMOVX DPTR,AMOV A,R3DJNZ 0FH,P164_1MOV 0FH,#8RETPBIT:MOV DPTR,#0E101H MOV A,R2MOVX DPTR,ARL AMOV R2,ARETDELAY:MOV R6,#4DEL:MOV R7,#250 DJNZ R7,$DJN

9、Z R6,DELRETTAB:DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H DB 0FEH,0F6H,0EEH,3EH,9CH,7AH,9EH,8EHEND5. 8255并口芯片的应用:交通灯控制系统的设计ORG 0000HAJMP STARTORG 0030HSTART:MOV DPTR,#0AC03H MOV A,#80HMOVX DPTR,A /8155初始化(所有并口显示中都要先8155初始化)MOV R5,#0F0H ACALL DENGMOV R1,#20ACALL DELAY MOV R0,#1LOOP01:MOV R5,#5AH ACALL

10、DENGMOV R1,#100ACALL DELAYDJNZ R0,LOOP01MOV R0,#3 / LED_2闪烁次数LOOP02: MOV R5, #0FAH ACALL DENG MOV R1,#10 ACALL DELAY MOV R5,#50H ACALL DENG MOV R1,#10 ACALL DELAY DJNZ R0,LOOP02MOV R5,#0A5H ACALL DENGMOV R1,#100ACALL DELAYMOV R0,#3LOOP03: MOV R5, #0F5H ACALL DENG MOV R1,#10 ACALL DELAY MOV R5,#0A0H

11、ACALL DENG MOV R1,#10 ACALL DELAY DJNZ R0,LOOP03AJMP LOOP01DENG:MOV DPTR,#0AC00H /8155 PA口输出 MOV A,R5 MOVX DPTR,A /8155 PA口送出显示参数RET /100ms延时子程序DELAY: MOV R7,#200DEL: MOV R6,#229 DJNZ R6,$ DJNZ R7,DEL DJNZ R1,DELAY RET END6. 将交通灯点亮ORG 0000HAJMP STARTORG 0030HSTART:MOV DPTR,#0AC03HMOV A,#80HMOVX DPTR

12、,AMOV DPTR,#0AC00HMOV A,#05AHMOVX DPTR,AAJMP $END7. AD转换实验ORG 0000AJMP STARTORG 000BHAJMP INT_0ORG 0030HSTART:MOV SP,#60HMOV TMOD,#01HMOV TH0,#4BHMOV TL0,#0FDHMOV R4,#2SETB EASETB ET0SETB TR0MOV DPTR,#0E100HMOV A,#3MOVX DPTR,AMOV 22H,#9MOV 23H,#0MOV 24H,#8MOV 25H,#0LOOP:MOV R0,#20HMOV R1,#6MOV R2,#1

13、 ACALL DISPLAYSJMP LOOPINT_0:MOV TH0,#4BHMOV TL0,#0FDHDJNZ R4,EXIT PUSH ACCPUSH DPHPUSH DPLMOV DPTR,#0A000HMOVX A,DPTRMOV B,#10HDIV ABMOV 21H,AMOV 20H,BMOVX DPTR,AMOV R4,#2POP DPLPOP DPHPOP ACCEXIT:RETIDISPLAY:MOV A,R0 MOV 0FH,#8ACALL P164ACALL PBITACALL DELAYMOV A,#0MOVX DPTR,AINC R0DJNZ R1,DISPLAY

14、RETP164:MOV DPTR,#TAB MOVC A,A+DPTRP164_1:RRC A MOV R3,A MOV ACC.0,C ANL A,#0FDH MOV DPTR,#0E102H MOVX DPTR,A ORL A,#0FEH MOVX DPTR,A MOV A,R3 DJNZ 0FH,P164_1 MOV 0FH,#8RETPBIT:MOV DPTR,#0E101H MOV A,R2MOVX DPTR,ARL A MOV R2,A RETDELAY:MOV R6,#4DEL:MOV R7,#250 DJNZ R7,$DJNZ R6,DELRETTAB:DB 0FCH,60H,

15、0DAH,0F2H,66H,0B6H,0BEH,0E0H DB 0FEH,0F6H,0EEH,3EH,9CH,7AH,9EH,8EHEND8. DA转换实验ORG 0000SJMP STARTORG 0030HSTART:MOV SP,#60HMOV A,#0LOOP1:MOV DPTR,#0B000HMOVX DPTR,AACALL XSACALL DELAYINC ACJNE A,#0FFH,LOOP1LOOP2:MOV DPTR,#0B000HMOVX DPTR,AACALL XSACALL DELAYDEC ACJNE A,#0,LOOP2SJMP LOOP1 XS:PUSH ACCM

16、OV DPTR,#TAB MOV B,#51 DIV AB MOV R1,A XCH A,B MOV B,#5 DIV AB MOVC A,A+DPTR MOV R4,#8 ACALL S164 MOV A,R1 MOVC A,A+DPTR MOV R4,#8 ACALL S164 MOV A,#0 CLR C MOV R4,#16 ACALL S164 POP ACC RETS164:RRC A MOV P1.0,C CLR P1.1 SETB P1.1 DJNZ R4,S164 RETDELAY:MOV R7,#200DEl:MOV R6,#229DJNZ R6,$DJNZ R7,DELR

17、ETTAB: DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H DB 0FEH,0F6H,0EEH,3EH,9CH,7AH,9EH,8EH END9. 定时器的应用ORG 0000HAJMP STARTORG 00BHAJMP INT_0ORG 0030HSTART:MOV TMOD,#01H MOV TH0,#4BHMOV TL0,#0FDHMOV R0,#20MOV R1,#0SETB ET0SETB TR0SETB EAAJMP $INT_0:MOV TH0,#4BHMOV TL0,#0FDHDJNZ R0,EXIT MOV R0,#20MOV A,R1M

18、OV DPTR,#TABMOVC A,A+DPTRMOV P1,AINC R1CJNE R1,#8,EXITMOV R1,#0EXIT:RETITAB:DB 0FFH,0FAH,0F5H,0AFH,05FH,0AAH,55H,0H,0FFHEND10. 开关控制LED的亮灭及速度 ORG 0000H ;程序从0000H开始执行 AJMP START;跳转到主程序 ORG 0030H;以免覆盖中断地址START: MOV R4,#1 ;立即数传送到累加器LOOP: CLR P3.3 ;进位标志位清零LOOP1: JNB P3.5,LOOP;直接寻址位为0则转移 JB P3.4,LOOP2;直接寻

19、址位为1则转移 JNB P3.4,$ INC R4;寄存器增1LOOP2: CPL P3.3;累加器求反 MOV A,R4;寄存器内容传送到累加器A MOV R5,A;累加器内容传送到累加器 ACALL DELAY;调用延时函数 AJMP LOOP1 ;循环DELAY: MOV R6,#200DEL: MOV R7,#229 DJNZ R7,$ DJNZ R6,DEL ;寄存器减1,不为0则转移 DJNZ R5,DELAY RET ;子程序返回 END11. 计数器实验ORG 0000SJMP STARTORG 001BHLJMP INT_1START:MOV SP,#60HMOV R5,#2

20、0MOV TMOD,#15HMOV TH1,#4BHMOV TL1,#0FDHMOV TH0,#0MOV TL0,#0SETB ET1SETB EASETB TR1SETB TR0MOV DPTR,#0E100HMOV A,#3MOVX DPTR,ALOOP:MOV R0,#50H;MOV R1,#4MOV R2,#1LCALL DISPLAYSJMP LOOPINT_1:MOV TH1,#4BHMOV TL1,#0FDHDJNZ R5,CONMOV R5,#20PUSH ACCPUSH BMOV A,TL0MOV B,#10HDIV ABMOV 50H,BMOV 51H,AMOV A,TH0

21、MOV B,#10HDIV ABMOV 52H,BMOV 53H,AMOV TH0,#0MOV TL0,#0POPBPOP ACCCON:RETIDISPLAY:MOV A,R0 MOV 0FH,#8ACALL P164ACALL PBITACALL DELAYMOV A,#0MOVX DPTR,AINC R0DJNZ R1,DISPLAYRETP164:MOV DPTR,#TAB MOVC A,A+DPTRP164_1:RRC A MOV R3,A MOV ACC.0,C ANL A,#0FDH MOV DPTR,#0E102H MOVX DPTR,A ORL A,#0FEH MOVX DP

22、TR,A MOV A,R3 DJNZ 0FH,P164_1 MOV 0FH,#8RETPBIT:MOV DPTR,#0E101H MOV A,R2MOVX DPTR,ARL A MOV R2,A RETDELAY:MOV R6,#4DEL:MOV R7,#250 DJNZ R7,$DJNZ R6,DELRETTAB:DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H DB 0FEH,0F6H,0EEH,3EH,9CH,7AH,9EH,8EHEND12. 串并转换实验ORG 0000SJMP STARTORG 0030HSTART:MOV SP,#60HMOV R1

23、,#0MOV DPTR,#TABLOOP:MOV A,#0CLR CMOV R4,#24ACALL S164MOV A,R1MOVC A,A+DPTRMOV R4,#8ACALL S164INC R1MOV R5,#10ACALL DELAYCJNE R1,#10,EXIT MOV R1,#0EXIT:SJMP LOOPS164:RRC AMOV P1.0,CCLR P1.1SETB P1.1DJNZ R4,S164RETDELAY:MOV R6,#200DEL: MOV R7,#230 DJNZ R7,$ DJNZ R6,DEL DJNZ R5,DELAY RETTAB: DB 0FCH,6

24、0H,0DAH,0F2H,66H,0B6H,0BEH,0E0H, 0FEH,0F6HEND13. 直流电机速度检测 ORG 0000H AJMP MAIN ORG 001BH AJMP INT_1 ORG 0030H MAIN: MOV SP,#60H MOV TMOD,#15H MOV TH1,#4BH MOV TL1,#0FDH MOV R0,#20 MOV TH0,#0 MOV TL0,#0 SETB ET1 SETB EA SETB TR0 SETB TR1 MOV R2,#00HUP: MOV A,R2 MOV DPTR,#0A000H /注意片选接YC2,非YC3 MOVX DPT

25、R,A MOV R5,#1 ACALL DELAY ;100ms INC R2 CJNE R2,#0FFH,UPDOWN:MOV A,R2 MOV DPTR,#0A000H MOVX DPTR,A MOV R5,#1 ACALL DELAY ;100ms DEC R2 CJNE R2,#00H,DOWN AJMP UPINT_1: MOV TH1,#4BH MOV TL1,#0FDH DJNZ R0,EXIT MOV R0,#20 PUSH ACC PUSH DPH PUSH DPL MOV A,TL0 ACALL XS MOV TL0,#0 MOV A,TH0 ACALL XS MOV TH

26、0,#0 POP DPL POP DPH POP ACCEXIT: RETIXS: MOV DPTR,#TAB ;MOV A,R2 MOV B,#10 ;显示10进制数 DIV AB XCH A,B ;MOV DPTR,#TAB MOVC A,A+DPTR ACALL FS XCH A,B ;MOV DPTR,#TAB MOVC A,A+DPTR ACALL FS RETFS: MOV R1,#8 YW:RRC A MOV P1.0,C CLR P1.1 SETB P1.1 DJNZ R1,YW RETDELAY:MOV R6,#200 DEL:MOV R7,#230 DJNZ R7,$ DJ

27、NZ R6,DEL DJNZ R5,DELAY RETTAB:DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H DB 0FEH,0F6H,0EEH,3EH,9CH,7AH,9EH,8EHEND14. 8255PB外接8个开关,编程将开关状态显示在数码管上(串并转换动态扫描方式)ORG 0000AJMP STARTORG0030HSTART:MOV DPTR,#0AC03HMOV A, #82HMOVX DPTR, AMOV DPTR,#0E100HMOV A,#3MOVX DPTR,ALOOP:MOV DPTR,#0AC01HMOVX A,DPTRMOV B,#

28、10HDIV ABMOV 10H,BMOV 11H,AMOV R0,#10HMOV R1,#2MOV R2,#1ACALL DISPLAYSJMP LOOPDISPLAY:MOV A,R0 MOV 0FH,#8ACALL P164ACALL PBITACALL DELAYMOV A,#0MOVX DPTR,AINC R0DJNZ R1,DISPLAYRETP164:MOV DPTR,#TAB MOVC A,A+DPTRP164_1:RRC A MOV R3,A MOV ACC.0,C ANL A,#0FDH MOV DPTR,#0E102H MOVX DPTR,A ORL A,#0FEH MO

29、VX DPTR,A MOV A,R3 DJNZ 0FH,P164_1 MOV 0FH,#8RETPBIT:MOV DPTR,#0E101H MOV A,R2MOVX DPTR,ARL A MOV R2,A RETDELAY:MOV R6,#4DEL:MOV R7,#250 DJNZ R7,$DJNZ R6,DELRETTAB:DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H DB 0FEH,0F6H,0EEH,3EH,9CH,7AH,9EH,8EHEND15. P3.4接开关K,编程将开关拨动次数,通过串并转换的方式进行显示 ORG 0000 SJMP STAR

30、T ORG 0030HSTART: MOV SP,#60HMOV R5,#0LOOP:JB P3.4,$ACALL DELAYJB P3.4,LOOPINC R5ACALL XSLOOP1:JNB P3.4,$ACALL DELAYJNB P3.4,LOOP1INC R5ACALL XSSJMP LOOPDELAY: MOV R7,#200DEL:MOV R6,#229DJNZ R6,$DJNZ R7,DELRETXS:MOV DPTR,#TABMOV A,R5 MOV B,#10HDIV ABMOV R1,AMOV A,B MOVC A,A+DPTR MOV R4,#8 ACALL S164

31、 MOV A,R1 MOVC A,A+DPTR MOV R4,#8 ACALL S164MOV A,#0CLR CMOV R4,#16ACALL S164 RETS164:RRC A MOV P1.0,C CLR P1.1 SETB P1.1 DJNZ R4,S164 RETTAB: DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H DB 0FEH,0F6H,0EEH,3EH,9CH,7AH,9EH,8EH END 16. 比较片内RAM30H、31H两个单元值的大小,将较大的数显示在数码管上 ORG 0000SJMP STARTORG 0030HSTART:M

32、OV SP,#60HMOV DPTR,#0E100HMOV A,#3MOVX DPTR,AMOV 30H,#06H ;随便赋两个值,显示较大的MOV 31H,#11HMOV A,30HSUBB A,31HJC SMALLMOV B,#10HMOV A,30HDIV ABMOV 30H,BMOV 31H,ABIG:MOV R0,#30HMOV R1,#2MOV R2,#1ACALL DISPLAYSJMP BIGSMALL:MOV B,#10HMOV A,31HDIV ABMOV 30H,BMOV 31H,ASMALL1:MOV R0,#30HMOV R1,#2MOV R2,#1ACALL DI

33、SPLAY SJMP SMALL1DISPLAY:MOV A,R0MOV 0FH,#8ACALL P164ACALL PBITACALL DELAYMOV A,#0MOVX DPTR,AINC R0DJNZ R1,DISPLAYRETP164:MOV DPTR,#TAB MOVC A,A+DPTRP164_1:RRC A MOV R3,A MOV ACC.0,C ANL A,#0FDH MOV DPTR,#0E102H MOVX DPTR,A ORL A,#0FEH MOVX DPTR,A MOV A,R3 DJNZ 0FH,P164_1 MOV 0FH,#8 RETPBIT:MOV DPTR

34、,#0E101H MOV A,R2MOVX DPTR,A RL A MOV R2,A RETDELAY:MOV R6,#4DEL:MOV R7,#250 DJNZ R7,$DJNZ R6,DELRETTAB:DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H DB 0FEH,0F6H,0EEH,3EH,9CH,7AH,9EH,8EHEND17. 单片机P1口接8个开关,编程将开关状态显示在数码管上(串并转换动态扫描方式)ORG 0000HSJMP STARTORG 0030HSTART:MOV SP,#60HMOV DPTR,#0E100HMOV A,#3MOVX

35、 DPTR,ALOOP:MOV A,P1MOV B,#10HDIV ABMOV 20H,BMOV 21H,AMOV R0,#20HMOV R1,#2MOV R2,#1ACALL DISPLAYAJMP LOOPDISPLAY:MOV A,R0 MOV 0FH,#8ACALL P164ACALL PBITACALL DELAYMOV A,#0MOVX DPTR,AINC R0DJNZ R1,DISPLAYRETP164:MOV DPTR,#TAB MOVC A,A+DPTRP164_1:RRC A MOV R3,AMOV ACC.0,C ANL A,#0FDH MOV DPTR,#0E102H MOVX DPTR,A ORL A,#0FEH MOVX DPTR,A MOV A,R3 DJNZ 0FH,P164_1 MOV 0FH,#8 RETPBIT:MOV DPTR,#0E101H MOV A,R2 MOVX DPTR,A RL A MOV R2,A RETDELAY:MOV R6,#4DEL:MOV R7,#250 DJNZ R7,$DJNZ R6,DELRETTAB:DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H DB 0FEH,0F6H,0EEH,3EH,9CH,7AH,9EH,8EHEND18. 将片内50H单元的值显示在数码管上ORG

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

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

关于我们      便捷服务       自信AI       AI导航        获赠5币

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

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

gongan.png浙公网安备33021202000488号   

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

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服