用T0监视一个生产流水线,每生产一百个工件,发出一个包装命令,包装成一箱,并记录其箱数,C语言代码?

如题所述

第六章 定时器及应用 §6.1 定时器/计数器概述 §6.2 定时器的控制 §6.3 定时器的四种模式及应用 §6.2 定时器的控制 定时器共有两个控制字,由软件写入TMOD和TCON两个8位寄存器,用来设置T0或T1的操作模式和控制功能。当89C51系统复位时,两个寄存器所有位都被清0。 一、模式0及应用 (2)查询方式 ORG 1000H MOV TMOD,#00H MOV TL0,#0CH MOV TH0,#0F0H SETB TR0 LOOP:JBC TF0,NEXT SJMP LOOP NEXT: MOV TL0,#0CH MOV TH0,#0F0H CPL P1.0 SJMP LOOP 二、模式1及应用 用于定时工作方式时,定时时间为: 三、模式2及应用 例:当P3.4引脚上的电平发生负跳变时,从P1.0输出一个500μs同步脉冲。请编程实现该功能。 解(1)模式选择 首先选T0为模式2,外部事件计数方式。当P3.4引脚上的电平发生负跳变时,T0计数器加1,溢出标志TF0置1;然后改变T0为500 μs定时工作方式,并使P1.0输出由1变为0。T0定时到产生溢出,使P1.0引脚恢复输出高电平,T0又恢复外部事件计数方式。如下图: (2)计算初值 T0工作在外部事件计数方式,当计数到0FFH时,再加1计数器就会溢出。设计数初值为X,当再出现一次外部事件时,计数器溢出。则 X+1=28 X=11111111B=0FFH T0工作在定时方式时,设晶振频率为6MHZ, 500 μs相当于250个机器周期。因此,初值X为: (28-X)×2 μs=500 μs X=6=06H (3)程序清单 ORG 0100H START:MOV TMOD,#06H MOV TH0,#0FFH MOV TL0,#0FFH SETB TR0 LOOP1: JBC TF0,PTFO1 SJMP LOOP1 PTRO1: CLR TR0 MOV TMOD,#02H MOV TH0,#06H MOV TL0,#06H 四、模式3及应用 工作模式3对T0和T1大不相同。 若将T0设置位模式3,TL0和TH0被分成为两个相互独立的8位计数器,如图6-11所示。 例:设某用户系统中已使用了两个外部中断源,并置定时器T1工作在模式2,作串行口波特率发生器用。现要求再增加一个外部中断源,并由P1.0引脚输出一个5kHz的方波。fosc=12MHz。 解:为了不增加其他硬件开销,可设置T0工作在模式3计数方式,把T0的引脚作附加的外部中断输入端,TL0的计数初值为FFH,当检测到T0引脚电平出现由1至0的负跳变时,TL0产生溢出,申请中断。这相当于边沿触发的外部中断源。 T0模式3下,TL0作计数用,而TH0可用作8位的定时器,定时控制P1.0引脚输出5kHz的方波信号。 TL0的计数初值为FFH,TH0的计数初值X计算如下: P1.0的方波频率为5kHz,故周期T=1/(5kHz)=0.2ms 用TH0定时100μs时,X=256-100×12/12=156 ORG 0000H LJMP MAIN ORG 000BH LJMP TLOINT ORG 001BH LJMP THOINT ORG 0030H MAIN: MOV TMOD,#27H;T0为模式3,计数方式;T1为模式2,定时方式 MOV TL0,#0FFH ;置TL0计数初值 MOV TH0,#156 ;置TH0计数初值 MOV TH1,#data ; data是根据波特率要求设置的常数(即初值) MOV TL1,#data MOV TCON,#55H ;外中断0,外中断1边沿触发,启动T0 MOV IE,#9FH ;开放全部中断 SJMP $ ( ……) TL0溢出中断服务程序(由000BH转来) TLOINT:MOV TL0,#0FFH ;TL0重赋初值 (中断处理) RETI TH0溢出中断服务程序(由001BH转来) THOINT:MOV TH0,#156 CPL P1.0 RETI 例3:用89C51单片机的定时器和中断功能试制一个“航标灯”。设fosc=12MHz,具有如下功能: (1)航标灯在黑夜应能定时闪闪发光,设定时间隔为2s,即亮2s,熄灭2s,并以此为周期循环。 (2)当白天到来时,航标灯应熄灭,停止定时器工作。 根据以上分析,可编写出如下控制程序: 设T0定时50ms,选择模式1,计数初值X为: X=216-12×50×1000/12=3CB0H R7软件计数2×1000/50=40 T0定时和R7计数可以延迟2s。 外部中断0中断服务程序 (由0003H转来) WBINT:MOV TMOD,#01H MOV TL0,#0B0H MOV TH0,#3CH SETB PT0
温馨提示:答案为网友推荐,仅供参考