51单片机习题答案ppt课件.ppt

上传人:牧羊曲112 文档编号:1955248 上传时间:2022-12-28 格式:PPT 页数:35 大小:126.50KB
返回 下载 相关 举报
51单片机习题答案ppt课件.ppt_第1页
第1页 / 共35页
51单片机习题答案ppt课件.ppt_第2页
第2页 / 共35页
51单片机习题答案ppt课件.ppt_第3页
第3页 / 共35页
51单片机习题答案ppt课件.ppt_第4页
第4页 / 共35页
51单片机习题答案ppt课件.ppt_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《51单片机习题答案ppt课件.ppt》由会员分享,可在线阅读,更多相关《51单片机习题答案ppt课件.ppt(35页珍藏版)》请在三一办公上搜索。

1、第四章 指令系统习题,4-36 (1)将R6的高4位和R7的高4位交换,R6、R7的低4位内容保持不变。 MOV A,R6 ;(A)=A1A2 ANL A,#0F0H ;(A)=A10 MOV R3,A ;(R3)=A10 MOV A,R7 ;(A)=B1B2 ANL A,#0FH ;(A)=0B2 ORL A,R3 ;(A)=A1B2 MOV R4,A ;(R4)=A1B2 MOV A,R7 ;(A)=B1B2,.,第四章 指令系统习题,ANL A,#0F0H ;(A)=B10 MOV R5,A ;(R5)=B10 MOV A,R6 ;(A)=A1A2 ANL A,#0FH ;(A)=0A2

2、 ORL A,R5 ;(A)=B1A2 MOV R6,A ;(R6)=B1A2 MOV A,R4 ;(A)=A1B2 MOV R7,A ;(R7)=A1B2,.,第四章 指令系统习题,(2) 两个无符号数分别存放在30H、31H,试求出它们的和并将结果存放在32H中。 MOV A,30H ADD A,31H MOV 32H,A HLT(3) 将30H单元的内容循环左移两位,送外部RAM 3000H中。MOV A,30H RL ARL AMOV DPTR,#3000H MOVX DPTR,A,.,第四章 指令系统习题,(4) 将程序存储器1000H的内容取出送外部RAM 3000H单元。CLR

3、AMOV DPTR,#1000H MOVC A,A+DPTRMOV DPTR,#3000H MOVX DPTR,A,.,第四章 指令系统习题,4-37 (SP)=20H,(A)=67H,(1FH)=25H,(20H)=34HPUSH ACCPUSH 1FH ;(23H)=34HPUSH 20H ;(22H)=25HSWAP A;(21H)=67HMOV 1FH,A;(20H)=34HRL A;(1FH)=25HMOV 20H,A;SP=21HPOP DPL ;(A)=ECHPOP DPH ;DPTR=2534HCLR 01H,.,第五章 MCS-51汇编语言程序设计,5-4 设常数和数据标号的

4、定义为ORG 2000HDAT1:DB 1,2,3,4,5DAT2:ABCDNEQU $-DAT2DAT3:DW 1200H,-2TAB:DW DAT1,DAT3(1)画出上述数据或地址的存储形式(2)写出各标号的地址N=2009H-2005H=04H,.,第五章 MCS-51汇编语言程序设计,.,第五章 MCS-51汇编语言程序设计,5-5双字节加法。被加数放在片内RAM 30H(高字节)和31H(低字节)单元中,加数放在片内RAM 32H(高字节)和33H(低字节)单元中,运算结果存放在30H和31H单元中,进位存放在位寻址区的00H位。START:PUSH A ;将A内容进栈保护 MOV

5、 R0,#31H;地址指针 MOV R1,#33H CLR 00H;00H位清零 MOV A,R0;低位字节数相加 ADD A,R1,.,第五章 MCS-51汇编语言程序设计,MOV R0,A DEC R0 DEC R1 MOV A,R0;高位字节数相加 ADDC A,R1 MOV R0,A MOV 00H,C POP A,.,第五章 MCS-51汇编语言程序设计,5-6 编写程序,找出片内RAM30H5FH单元中无符号数的最大值,并存放在60H单元中。MOV R0,#30H MOV B,R0 ;B中存放最大值L0: INC R0MOV A,R0CLR CSUBB A,B ;Xi+1- XiJ

6、C L1 ;Xi+1 Xi,则交换L1:CJNE R0,#5FH,L0MOV 60H,B SJMP,.,第五章 MCS-51汇编语言程序设计,5-7 从片内RAM 30H开始存放20个数,找出其中的最小数。MOV R0,#30H ;首地址MOV R2,#20 ;20个数MOV B,R0 ;B中存放最小值L0: INC R0MOV A,R0CLR CSUBB A,B ;Xi+1- XiJNC L1 ;Xi+1 XiMOV B,R0 ;Xi+1 Xi,则交换L1:DJNZ R2,L0SJMP $,.,第五章 MCS-51汇编语言程序设计,5-8 编写程序,查找片内RAM 31H50H单元中是否有常

7、数41H,若有则将51H单元置-1;若没有,则将51H单元清0。MOV R0,#30H ;首地址L0:INC R0CJNE R0,#41H,NEQEQ:MOV 51H,#0FFH ;51H单元置-1SJMP ED1NEQ:CJNE R0,#51H,L0MOV 51H,#00H ED1:HLT,.,第五章 MCS-51汇编语言程序设计,5-9 编写程序,将片内RAM 40H6FH单元中的无符号数按照从小到大的次序排列,结果仍放在原存储空间。MOV R2,#2FH ;个数LP1:MOV A,R2 MOV R3,A MOV R0,#40H ;地址指针指向首地址 CLR 00H ;位地址 位操作LP2

8、:MOV A,R0 MOV B,A INC R0 CLR CMOV A,R0,.,第五章 MCS-51汇编语言程序设计,SUBB A,B ;Xi+1- XiJNC LESS ;CY=0则转移到LESSMOV A,B ;CY=1 Xi+1 Xi JNB 00H,STOP ;(00H)=0则转移 DJNZ R2,LP1STOP:RET,.,第五章 MCS-51汇编语言程序设计,5-10 编写程序,统计片内RAM20H5FH中出现55H的次数,并将统计结果送入60H单元。MOV R0,#20H ;地址指针指向首地址MOV 60H,00H ;清零L0:MOV A,R0 ;取数 CJNE A,#55H,

9、L1 ;(A)55H,则转到L1 INC 60H ;(A)=55H,L1:INC R0 ;取下一个数 CJNE R0,#60H,L0 ;是否到末地址? HLT,.,第五章 MCS-51汇编语言程序设计,5-11 编程将片内RAM30H7FH单元清零。方法1:控制循环体的执行次数BE1:MOV R0,#30HMOV R7,#50HLP1:MOV R0,#00HINC R0DJNZ R7,LP1RET方法2:判断循环体的结束条件BE2:MOV R0,#2FHLP2:INC R0MOV R0,#00HCJNE R0,#7FH,LP2RET,.,第五章 MCS-51汇编语言程序设计,5-12编程序,将

10、片外RAM3000H30FFH单元全部清零。MOV DPTR,#3000HMOV R0,#00H L1: MOV A,#00H MOVX DPTR,A INC DPTRDJNZ R0,L1SJMP $,.,第五章 MCS-51汇编语言程序设计,5-13 从片内RAM DATA1起,存放20H个数据,编写程序,将这20H个数据逐一移到片外RAM DATA2单元开始的存储空间。MOV R0,#DATA1 ;地址指针指向首地址MOV R7,#20H ;循环次数MOV DPTR,#DATA2 L1: MOV A,R0MOVX DPTR,A INC DPTRINC R0DJNZ R7,L1SJMP $,

11、.,第五章 MCS-51汇编语言程序设计,5-14 将片外RAM 8000H开始的20个字节数据传送到片外RAM 8100H开始的地址单元中。MOV R0,#00H MOV R1,#00H MOV R2,#20HL1: MOV P2,#80H ;地址指针指向8000HMOVX A,R0 ;输入数据MOV P2,#81H ;地址指针指向8100HMOVX R1,A ;输出数据INC R0INC R1DJNZ R2,L1HLT,.,第五章 MCS-51汇编语言程序设计,5-15 编程统计累加器A中“1”的个数。MOV R2,#07H ;循环次数MOV R3,#00H ;存放“1”的个数LP1:RL

12、C AJNC LP2 ;C=0INC R3;C=1LP2:DJNZ R2,LP1HLT,.,第五章 MCS-51汇编语言程序设计,5-16 从片内30H开始,存放50个数据。编写程序,将其中正数、负数分别送入片外 RAM 5000H和5500H开始的单元,分别记下正数和负数的个数并送入片内RAM70H和71H单元。MOV R0,#30H ;片内RAM首地址MOV R1,#00H ;清零 MOV R2,#50 ;数据的个数 MOV R3,#00H ;R3存放正数个数清零 MOV R4,#00H ;R4存放负数个数清零T1:MOV A,R0 ;取数 INC R0 ;指针指向下一个单元 CLR CS

13、UBB A,#00H JC T2 ;有借位,Xi0,.,第五章 MCS-51汇编语言程序设计,MOV P2,#50H ;片外正数首地址 MOV R1,R3 ;5000H DEC R1MOVX R1,A ;输出数据JMP T0 ;比较一个数结束T2:INC R4 ;Xi0 MOV R1,R4DEC R1 ;片外负数首地址 MOV P2,#55H ;5500HMOVX R1,A ;输出数据T0:DJNZ R2,T1 MOV 70H,R3 ;正数的个数 MOV 71H,R4 ;负数的个数 HLT,.,第五章 MCS-51汇编语言程序设计,5-19 编写程序,将30H34H单元中压缩的BCD码转换为A

14、SCII码,并将结果存放在片内RAM60H69H单元中。MOV R0,#30HMOV R1,#60HT1:MOV A,R0MOV B,AINC R0T2:ANL A,#0FHADD A,#30HMOV R1,AINC R1 MOV A,B,.,第五章 MCS-51汇编语言程序设计,SWAP AANL A,#0FHADD A,#30HMOV R1,AINC R1CJNE R0,#35H,T1HLT,.,第五章 MCS-51汇编语言程序设计,5-20 将片内RAM 30H单元的内容转换成三位BCD码,并将结果存入片外RAM 1000H开始的单元。解:将BCD码先放入31H(百位)、32H(十位)、

15、 33H(个位)单元中。方法一:先得到百位BD1:MOV A,30HMOV B,#100DIV ABMOV 31H,AMOV A,B,.,第五章 MCS-51汇编语言程序设计,MOV B,#10DIV ABMOV 32H,AMOV 33H,B方法二:先得到个位BD2:MOV A,30HMOV B,#10DIV ABMOV 33H,BMOV B,#10DIV AB,.,第五章 MCS-51汇编语言程序设计,MOV 32H,BMOV 31H,A将结果存入片外RAM 1000H开始的单元MOV R0,#30HMOV DPTR,#1000HLP:INC R0MOV A,R0MOVX DPTR,AINC

16、 DPTRCJNE R0,#33H,LPRET,.,第七章 定时器/计数器,7-14 设MCS-51单片机晶振频率为12MHz,使用定时器1的工作方式1,在P1.0端输出周期为100ms的方波,使用中断方式设计程序,写出相应的是初始化程序和中断服务程序。分析:晶振频率fosc=12MHz,计数周期=1s 周期100ms的方波,中断周期T1=100ms/2=50ms初值N=65536-T112MHz/12=15536=3CB0HORG 0000HAJMP MAINORG 001BH ;T1的中断入口地址AJMP T1_INT ;T1的中断服务程序,.,第七章 定时器/计数器,ORG 0100HM

17、AIN:MOV SP,#60H ;设置堆栈 MOV TMOD,#10H ;送模式字 MOV TH1,#3CH ;初值的高8位 MOV TL1,#0B0H ;初值的低8位 SETB ET1 ;ET1=1允许T1中断 SETB EA ;开中断,中断总允许 SETB TR1 ;TR1=1 启动T1工作HERE:SJMP HERE ;等待T1_INT: MOV TH1;#3CH ;中断服务程序 MOV TL1,#0B0H CPL P1.0 ;P1.0取反形成方波 RETI END,.,第七章 定时器/计数器,7-15 对上题,在P1.0端输出周期为100ms方波的同时,还要在P1.1端输出周期为10s

18、方波,写出相应的初始化程序和中断服务程序。分析:晶振频率fosc=12MHz,计数周期=1s 周期100ms方波,中断周期T1=100ms/2=50ms采用软件延时方法,在P1.1端输出周期为10s的方波,延时次数:5s/50ms = 100ORG 0000HAJMP MAINORG 001BH ;T1的中断入口地址AJMP T1_INT ;T1的中断服务程序,.,第七章 定时器/计数器,ORG 0100HMAIN:MOV SP,#60H ;设置堆栈 MOV TMOD,#10H ;送模式字 MOV TH1,#3CH ;送初值的高8位 MOV TL1,#0B0H ;送初值的低8位 MOV R2,

19、#100 SETB ET1 ;ET1=1允许T1中断SETB EA ;开中断,中断总允许SETB TR1 ;TR1=1 启动T1工作HERE:SJMP HERE ;等待COUNTT1_INT:MOV TH1,#3CH ;中断服务程序 MOV TL1,#0B0H,.,第七章 定时器/计数器,CPL P1.0 ;P1.0取反形成方波 DJNZ R2,LP MOV R2,#100 CPL P1.1 ;P1.1取反形成方波LP: RETI END,.,第七章 定时器/计数器,7-16 使用计数器0,记录T0引脚输入脉冲数,计满200个脉冲,则对内部RAM单元COUNT进行加1操作,使用中断方式设计程序

20、,试写出中断初始化程序和中断服务程序。T_CONST EQU 10000H-200 ORG 0000H AJMP MAIN ORG 000BH ;T0的中断入口地址 AJMP T0_INT ;T0的中断服务程序 ORG 0100HMAIN: MOV SP,#60H ;设置堆栈 MOV TMOD,#05H ;设置模式字,.,第七章 定时器/计数器,MOV COUNT,#00H ;单元清零MOV TH0,#HIGH(T_CONST);送初值高8位MOV TL0,#LOW(T_CONST) ;送初值低8位SETB ET0 ;ET0=1 T0中断允许SETB TR0 ;TR0=1 启动定时器0工作SETB EA ;开中断,中断总允许SJMP $ ;等待 ;中断服务程序T0_INT:MOV TH0,#HIGH(T_CONSTMOV TL0,#LOW(T_CONST)INC COUNT ;COUNT单元加1操作 RETI END,.,.,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号