5.7 定时器与外部中断程序设计举例

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

1 第五章指令系统及应用程序设计

5.7 汇编语言程序设计举例

例5.15 设定时器T0选择工作模式0,定时时间为1ms,fosc=6MHZ

(1)试确定T0初值,计算最大定时时间

(2)编程实现其定时功能

(1) 设T0的初值为X,(TL0低5位,TH0高8位)

从X开始加1次数: 2¹³-X

加1一次的时间: Tosc*12=1/6 *12=2μs

(2¹³-X) * 1/6 *12=1ms

X=7692D=1111000001100B

TL0低5位=01100B=0CH TH0=11110000B=F0H 最大定时时间: 2¹³*1/6*12

(2)

ORG 0000H SETB TR0 RESET: AJMP MAIN SETB ET0 ORG 000BH SETB EA

AJMP ITOP RET

ORG 0100H ORG 0120H MAIN: MOV SP,#60H ITOP: MOV TL0,#0CH ACALL PTOMD MOV TH0,#F0H HERE: AJMP HERE RETI PTMOD: MOV TL0,#0CH

MOV TH0,#0F0H

例5.16 将P1口的P1.4~P1.7作为输入位,P1.0~P1.3作为输出位,利用89C51 将开关所设的数据读入单片机内,并通过P1.0~P1.3输出,驱动发光二极管。要求采用中断边沿触发方式,每中断一次,完成一次读/写操作。

Vcc P1.7 EA P1.6

P1.5

X1

P1.4 P1.3 X2 P1.2 P1.1 P1.0 RST INT0

Vss +5V

3133pF 19

1833pF +5V 22uF 1 k Ω 1 k Ω

1 k Ω

200 k Ω38373635

34

33

32

39+5V K 4.7 k Ω89C51+9外部中断INT0电路

图5.13 外部中断INT0电路

ORG 0000H ORG 0200H

AJMP MAIN; INSER :MOV A #0F0H;

ORG 0003H MOV P1 ,A;

AJMP INSER; MOV A,P1;

ORG 0030H SWAP A;MAIN:SETB EX0 ; MOV P1,A;

SETB IT0; RETI;

SETB EA END

HERE:SJMP HERE

例5.19 利用T0的工作模式0产生1ms定时,在P1.0引脚输出周期为2ms的方波。设单片机晶振频率fosc=12MHz。编程实现其功能。要在P1.0引脚输出周期为2ms的方波,只要使P1.0每隔1ms取反一次即可。

(1)选择工作模式

T0的模式字为TMOD=00H,即

M1M0=00,C/T=0,GATE=0,其余位为0。

(2)计算1ms定时时T0的初值

(213-X)×1/12 × 10-6×12=1×10-3 s

X=7193D=11100000 11000B

T0的低5位:11000B=18H即 (TL0)=18H

T0的高8位:11100000B=E0H即 (TH0)=E0H

(3)采用查询方式的程序

程序清单:

MOV TMOD,#00H ;设置T0为模式0 MOV TL0,#18H ;送初值

MOV TH0,#0E0H

SETB TR0 ;启动定时

LOOP: JBC TF0,NEXT ;查询定时时间到否 SJMP LOOP

NEXT:MOV TL0,#18H ;重装计数初值

MOV TH0,#0E0H

CPL P1.0 ;取反

SJMP LOOP ;重复循环

(4)采用定时器溢出中断方式的程序

程序清单:

主程序

ORG 0000H

RESET: AJMP MAIN ;跳过中断服务程序区 ORG 0030H

MAIN: MOV TMOD,#00H ;设置T0为模式0

MOV TL0,#18H ;送初值

MOV TH0,#0E0H

SETB EA ;CPU开中断

SETB ET0 ;T0中断允许

SETB TR0 ;启动定时

HERE:SJMP HERE ;等待中断,虚拟主程序

中断服务程序

ORG 000BH

AJMP CTC0

ORG 0120H

CTC0: MOV TL0,#18H ;重新装如初值 MOV TH0,#0E0H

CPL P1.0 ;P1.0取反

RETI

相关文档
最新文档