单片机习题解答20页PPT

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MOV TL1,#0B5H
CLR P1.0
CLR F0
;“输出电平标志”置1(输出低电平)
SJMP L2
L1:MOV TH0,#0FFH
;T0定时初值(-25的补码)
MOV TL0,#0E7H
SETB P1.0
SETB F0
;“输出电平标志”置1(输出高电平)
L2:RETI
END
12.11 编写中断初始化程序,将 I N T 1 设为高优 先级中断、电平触发方式;T0溢出中断设为低优 先级中断,串行口中断为高优先级中断,其余中 断源设为禁止状态。
MOV A,40H
亦可:
CPL A
CLR A
INC A MOV 40H,A
CLR C SUBB A,40H MOV 40H,A
11.8 试编程将A中的高四位送入P2口的高四 位,P2口低四位不变。
MOV R0,A ANL A,#0F0H ANL P2,#0FH ORL P2,A MOV A,R0
11.14 编写程序实现十进制减法,计算65-32 ORG 0100H
;被减数起始地址送R0 ;减数起始地址送R1 ;字长送R2
;被减数送A ;相减,形成Cy ;存差
;修改被减数地址指针 ;修改减数地址指针 ;若未完,则转LOOP
12.8 片内RAM 20H单元开始存放着8个无符号数,编
写子程序找出其中的最大值送入片内RAM的30H单元
MOV R0,#20H
;数据区首地址送R0
12.7 已知片内RAM 20H和30H为起始地址的存储区中分别有8 字节无符号被减数和减数(低字节在前,高字节在后)。编写子程序 完成减法运算,并把差放入以20H为起始地址的存储单元中
BUBTR: MOV R0,#20H MOV R1,#30H MOV R2,#08H CLR C
LOOP:MOV A,R0 SUBB A,R1 MOV R0,A INC R0 INC R1 DJNZ R2,LOOP RET
CLR C MOV A,#9AH SUBB A , #32H ADD A , #65H DA A CPL C
11.15 试编写程序,将内部RAM以BK为起始 地址的10个单元中的数据求和,并将结果送入 SUM单元。设和不大于255
MOV R0,#BK MOV R7,#0AH CLR A LOOP:ADD A,R0 INC R0 DJNZ R7,LOOP MOV SUM,A SJMP $
MOV TH0,#0FFH ;T0计数初值(计数25,定时50us)
MOV TL0,#0E7H
WAIT1:JNB TF0,WAIT1
CLR TF0
CLR P1.0
MOV TH0,#0FFH ;T0计数初值(计数75,定时150us)
MOV TL0,#0B5H
WAIT2:JNB TF0,WAIT2
CLR TF0
SJMP WAIT0
ORG 0000H
;采用中断方式的程序
LJMP MAIN
;跳转至主程序
ORG 000BH ;T0中断向量地址
AJMP T0ISR
ORG 0030H
MAIN:MOV SP,#30H
;调整堆栈指针
MOV TMOD,#01H ;设置T0工作于模式1
MOV TH0,#0FFH
;T0定时初值(-25的补码)
(213-C0H)*Tcy = (8192-192)*Tcy = 8000*Tcy µS。
10.12 若单片机系统的晶振频率为11.0592MHz, 串行口工作于方式1,波特率为4800b/s,请写出
T1作为波特率发生器的方式控制字和计数初值。
答:串行口工作于方式1,晶振频率为11.0592MHz,
MOV IE,#96H SETB PX1 CLR IT1 CLR PT0 SETB PS
12.2 已知一个补码形式的16位二进制数(低8位在 NUM单元,高8位在NUM+1单元),试编程求出该16位 二进制数的绝对值,并存放在原单元中。
MOV A,NUM+1 JNB ACC.7,DONE MOV R0,#NUM MOV A,R0 CPL A ADD A,#01H MOV R0,A
INC R0 MOV A,R0 CPL A ADDC A,#00H MOV R0 A DONE:SJMP $
由教材P.256的公式计算,或由表10.8查阅可知, TH1=FAH。即:
方式控制字 :TMOD=20H,
计数初值:TH1=TL1=FAH (SMOD=0);

或: TH1=TL1=F4H (SMOD=1)。
11.7 已知:40H单元中有一个正数X,试写出 对X求补的程序。
答:对一个8位带符号二进制机器数的求补 可以定义为“求反加1”。相应程序为:
MOV A,R0
;取第一个数做基准数送A
MOV R7,#07H
;比较次数送计数器R7
LOOP:INC R0
;指向下一个单元
MOV 30H,R0
;要比较的数暂存30H
CJNE A,30H,CHK ;两数作比较
CHK:JNC LOOP1
;A大,则转移
MOV A,R0
;A小,则大数送A
LOOP1:DJNZ R7,LOOP ;计数器减1,不为零,继续
10.10 系统复位后执行下述指令,试问T0的定时 时间为多长?
MOV TH0, #06H MOV TL0, #00H SETB TR0
答: 系统复位后,TMOD=00H,此时T0工作为方 式0、定时器初值为:TH0=06H,TL0=00H, 因为采用方式0工作,丢掉TL0的高3位,则 THL0中的二进制数为:0,0000,110 0,0000即变为 00C0H,则有: T0的定时时间为:
MOV TL0,#0E7H
MOV IE,#82H
;打开全局中断和T0中断
SETB TR0
;启动T0
SETB P1.0
SETB F0 )
;“输出电平标志”置1(输出高电平
ORG 0100H
;定时器T0中断服务程序
T0ISR: JNB F0,L1
MOV TH1,#0FFH
; T0计数初值(-75的补码)
MOV 30H,A
;比较完,存结果
源自文库RET
12.10 已知51系列单片机系统的晶振频率为6MHz,请 编写程序,使用T0定时,在P1.0输出连续矩形波,
ORG 0000H
;采用查询方式的程序
MAIN:MOV TMOD,#01H ;设置T0工作于模式1
SETB TR0
;启动T0
WAIT0:SETB P1.0
相关文档
最新文档