5-40 以中断方式,用汇编语言编写定时器t0方式0,1,2下,定时1ms的程序。设系统focs = 12mhz。
解1:方式0
确定装入t0的常数。机器周期为:
设所需初值为x,则。
1c18h = 1 1100 0001 1000b
根据13位定时器的特性,th0放x的高8位,tl0放低5位,我们将x值重排如下:x = 1110 0000 1 1000,即得本任务的时间常数为:th0 = e0h,tl0 = 18h。
org 0000h
ajmp main
org 000bh
ljmp time0int
org 0050h
main: mov sp,#60h
mov tmod,#00h
mov tl0,#18h
mov th0,#0e0h
setb et0 ;允许t0中断。
setb ea ;开放总中断。
setb tr0 ;启动t1定时。
sjmp $
time0int: clr tr0禁止t0
clr et0
reti中断返回。
end org 0000h
ajmp main
org 000bh
ljmp time0int
org 0050h
main: mov sp,#60h
mov tmod,#01h
mov tl0,#18h
mov th0,#0f0h
setb et0 ;允许t0中断。
setb ea ;开放总中断
setb tr0 ;启动t1定时。
sjmp $
time0int: clr tr0 ;禁止t0
clr et0
reti中断返回。
end 解3:方式2
确定装入t0的常数。计数器每机器周期计数值加1,机器周期为:
方式2为8位常数自动重装,每次溢出最大值为256μs,为编程方便,又减少中断次数,采用4次250μs的方法实现本任务。其时间常数为:th0 = 06h,tl0 =06h。
org 0000h
ajmp main
org 000bh
ljmp time0int
org 0050h
main: mov sp,#60h
mov r7,#
mov tmod,#02h
mov tl0,#06h
mov th0,#06h
setb et0 ;允许t0中断。
setb ea ;开放总中断。
setb tr0 ;启动t1定时。
sjmp $
time0int: djnz r7,return
clr tr0 ;禁止t0
clr et0
return: reti中断返回。
end 5-41 以中断方式,用汇编语言编写定时器t1方式0,1,2下,计数的程序。设计数终值为n,说明在计数值不溢出的情况下,每种方式下n的最大值是多少。
解1:方式0
13位计数初值(8192-计数值)高8位为nh,低8位为nl
org 0000h
ajmp main
org 001bh
ljmp time1int
org 0050h
main: mov sp,#60h
setb f0 ;f0=1继续,f0=0停止计数。
mov tmod,#40h
mov tl1,#nhh
mov th1,#nlh
setb et1允许t1中断。
setb ea ;开放总中断。
setb tr1 ;启动t1定时。
sjmp $
time1int:jnb f0,stopt1
mov tl1,#nhh
mov th1,#nlh
sjmp return
stopt1:clr f0
clr tr1 ;禁止t1
clr et1
return:reti中断返回。
end 解2:方式1
16位计数初值(65536-计数值)高8位为nh,低8位为nl。
org 0000h
ajmp main
org 001bh
ljmp time1int
org 0050h
main: mov sp,#60h
setb f0 ;f0=1继续,f0=0停止计数。
mov tmod,#50h
mov tl1,#00h
mov th1,#00h
setb et1 ;允许t0中断。
setb ea ;开放总中断。
setb tr1 ;启动t1定时。
sjmp $
time1int: jnb f0,stopt1
mov tl1,#nhh
mov th1,#nlh
sjmp return
stopt1: clr f0
clr tr1 ;禁止t1
clr et1
return:reti中断返回。
end 解3:方式2为8位计数(少用),计数值在tl1中设计数目标为nl。
nl equ yyh
org 0000h
ajmp main
org 001bh
ljmp time1int
org 0050h
main: mov sp,#60h
setb f0 ;f0=1继续,f0=0停止计数。
mov tmod,#60h
mov tl1,#nlh
mov th1,#nlh
setb et1 ;允许t0中断。
setb ea ;开放总中断。
setb tr1 ;启动t1定时。
sjmp $
time1int: jnb f0,stopt1
sjmp return
stopt1: clr f0
clr tr1 ;禁止t1
clr et1
return: reti中断返回。
end方式的最大计数值分别为和256。
5-42设中断请求源已接好,外部中断0用电平触发方式,外部中断1用下降沿触发方式,用汇编语言编写它们响应并处理中断的程序。处理内容可用nop指令表示。注意比较两者的异、同。
解1:外部中断0用低电平触发方式。
org 0000h
ajmp main
org 0003h
ljmp int0int
org 0050h
main: mov sp,#60h
setb ex0 ;允许外部中断0中断。
clr it0
setb ea ;开放总中断。
sjmp $
int0int: nop
reti ;中断返回。
end 解2:外部中断1用下降沿触发方式。
org 0000h
ajmp main
org 0013h
ljmp int0int
org 0050h
main: mov sp,#60h
setb ex1 ;允许外部中断1中断。
setb it1
setb ea ;开放总中断。
sjmpint0int: nop
reti中断返回。
end两者对称,只需0,1对调,清it0,置it1。
5-43要求发送用查询方式,接收用中断方式。用汇编语言编写在方式1,2,3下,51机串口发送和接收一帧数据的程序。设发送和接收的数据都在r5中。
注意:设系统focs = 11.0592mhz,在波特率可变方式下,波特率取9600(baud),一律不用pcon加速。
解1:方式1发送。
不用pcon加速时,定时器t1用方式2,查表5-6或计算,t1常数为fdh
org 0000h
ajmp main
org 0050h
main: mov sp,#60h
mov scon,#40h
mov pcon,#00h
mov tmod,#20h
mov tl1,#0fdh
mov th1,#0fdh
setb tr1 ;启动波特率。
mov sbuf,r5
wait: jbc ti,stop
sjmp wait
stop: sjmp动态停机end
方式1接收程序为。
org 0000h
ajmp main
org 0023h
ljmp serint
org 0050h
main: mov sp,#60h
mov scon,#50h
mov pcon,#00h
mov tmod,#20h
mov tl1,#0fdh
mov th1,#0fdh
setb es ;允许串口中断。
setb ea ;开放总中断。
setb tr1 ;启动波特率。
sjmp $
serint:clr ri
mov r5,sbuf
reti中断返回。
end 解2:方式2发送不用计算定时器t1常数。
org 0000h
ajmp main
org 0050h
main: mov sp,#60h
mov scon,#80h ;sm2=0
mov pcon,#00h
mov sbuf,r5
wait: jbc ti,stop
sjmp wait
stop: sjmp动态停机。
end 方式2接收程序为。
org 0000h
ajmp main
org 0023h
ljmp serint
org 0050h
main: mov sp,#60h
mov scon,#90h ;sm2=0
mov pcon,#00h
setb es允许串口中断。
setb ea开放总中断。
sjmp $
serint:clr ri
mov r5,sbuf
reti中断返回。
end 解3:方式3发送:不用pcon加速时,定时器t1用方式2,查表5-6或计算,t1常数为fdh
org 0000h
ajmp main
org 0050h
main: mov sp,#60h
mov scon,#0c0h;sm2=0
mov pcon,#00h
mov tmod,#20h
mov tl1,#0fdh
mov th1,#0fdh
setb tr1启动波特率。
mov sbuf,r5
wait: jbc ti,stop
sjmp wait
stop: sjmp动态停机。
end 方式3接收程序为。
org 0000h
ajmp main
org 0023h
ljmp serint
org 0050h
main: mov sp,#60h
mov scon,#0d0h;sm2=0
mov pcon,#00h
mov tmod,#20h
mov tl1,#0fdh
mov th1,#0fdh
setb es ;允许串口中断。
setb ea ;开放总中断。
setb tr1 ;启动波特率。
sjmp $
serint:clr ri
mov r5,sbuf
reti中断返回。end
单片机作业
单片机测试一。第一部分选择题。一 单项选择题在每小题列出的四个备选项中只有一个是符合题目要求的,请将其 填写在题前的括号内。错选 多选或未选均无分。1.下列关于单片机说法错误的是。单片机的cpu能处理8位二进制数据或 以及布尔运算。b.8051总共有256个ram单元,内部数据存储器为前128单元。...
单片机作业
单片机原理及应用 作业。1 叫原码 反码和补码?答 正数的反码和补码都是和原码相同。负数。在计算机中,负数以其正值的补码形式表达。什么叫补码呢?这得从原码,反码说起。原码 一个整数,按照绝对值大小转换成的二进制数,称为原码。比如 是5的原码。反码 将二进制数按位取反,所得的新二进制数称为原二进制数的...
单片机作业
3 2访问外部数据存储器和程序存储器可以用哪些指令来实现?举例说明。答 访问外部数据存储器可以用ramx指令来实现。例如 movx a,ri 寄存器ri指向的片外ram单元中的内容送到累加器a中。访问程序存储器可以用ramc指令来实现。例如 movc a,a dptr rom中 地址单元中的内容送到...