③编程:
ORG LJMP ORG AJMP
0000H MAIN 000BH INQP
;初始化程序
ORG 0030H
MAIN: MOV TMOD,#10H
MOV TH0,#0FFH MOV TL0,#06H SETB TR0 SETB ET0 SETB EA AJMP ORG
$
0100H
;中断服务子程序
INQP: MOV TH0,#0FFH
MOV TL0,#06H
CPL RETI
P1.6
3. 解:①定时常数计算:振荡器的频率fosc=12MHZ,方式1计数长度L=16。定时时间T=5ms。
定时常数TC?2?166?10?5?10126?3?65536?2500?60536
定时常数TC转换为16 进制数0F63CH,所以TH0=0F6H,TL0=3CH ②方式控制字TMOD=00000001B=01H ③编程:
ORG LJMP ORG AJMP ORG
MAIN: MOV
MOV MOV SETB SETB SETB AJMP ORG
INQP: MOV
MOV MOV MOV RETI
0000H MAIN 000BH INQP 0030H
TMOD,#01H TH0,#0F6H TL0,#3CH TR0 ET0 EA $
0100H TH0,#0F6H TL0,#3CH C,P1.0 P1.7,C
;初始化程序
;中断服务子程序
第 8 页 共 10 页
4. 解:一次定时为5ms,中断100次为500ms。T0方式0为13位定时器,计数初值为 8192-5000=5692,转换为16进制数为163CH,对应的13位为TL0=1CH,TH0=0B1H 编程:
ORG 0000H ;定义程序起始地址,即下一条程序的存放地址 AJMP MAIN ;跳转到MAIN函数处
ORG
LJMP 0RG
MAIN: MOV
MOV MOV MOV SETB SETB SETB MOV
SJMP ORG
INTTO:MOV
MOV DJNZ
NEXT: MOV RL MOV
EXIT: RETI
000BH INTT0 0030H A,#0FEH
;由于定时/计数器0对应的中断矢量为0000BH
;MAIN函数起始地址
;本实验中是低电平点亮,该指令是将第一盏灯点亮 ;设置T0的工作方式:方式0,定时方式 ;定时初值 ;开中断
;启动定时器/计数器T0 ;循环初值
;等待中断,等同于WAIT: SJMP WAIT ;中断服务子程序起始地址
;重装定时/计数器,每隔5ms产生一个中断 ;没有到500ms,继续延时
;到了500ms,将A中内容循环左移,亮下一盏灯
TMOD,#00H TL0,#1CH TH0,#0B1H EA ET0 TR0 R7,#100
$ 0100H TL1,#1CH TH1,#0B1H R7,EXIT P1,A A
R7,#100
END
5. 多机通信的工作原理为:先将4台从机和主机的SM2均置1,并处于允许串行口中断
接受状态。主机先发地址帧,比如发出2#从机地址02,且置TB8为1。各从机由于SM2=1,将响应主机发来的第9位数据,都进入中断子程序。在中断子程序中,各从机将自己的机号与02作比较,若相同,则置SM2=0,数据通信;若不同,返回主程序,等待下次被点名。然后主机置TB8为0,再发送命令或数据。2从机由于在中断子程序中将SM2置为0,故可以和主机进行通信,通信完毕,2#从机再置SM2置1,等待下一轮的通信。
#
第 9 页 共 10 页
相关推荐: