#include #define uchar unsigned char#define uint un。2018-02-13@单片机。" />

2018-02-13@单片机

定时器知识点 【2018-02-13@单片机】由于注释不知道怎么了,复制代码有问题,所以还是截图了,代码加解释,加油
郭天祥10天学会单片机系列

">#include #define uchar unsigned char #define uint unsigned int sbit dula =P2^6; sbit wela=P2^7; uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x5e, 0x76,0x79,0x38,0x3f,0 }; uchar temp,t0,t1,bai,shi,ge,flag,flag1; uint shu; void init(); void display(uchar,uchar,uchar,uchar,uchar,uchar); void delay(uint z) { uint t1,y; for (t1=z; t1>0; t1--) for(y=110; y>0; y--); } void main() { init(); while(1) { if(flag!=1) display(7,6,5,bai,shi,ge); else display(16,17,18,18,19,20); } } void init() { shu=432; temp=0xfe; P1=temp; TMOD=0x11; /*定时器0工作,工作方式为3仅有T0可以定时器/计数器工作方式寄存器 TMOD特殊功能寄存器,不可以位寻址,89H复位即清零 定时器1定时器0 GATA C/T非 M1 M0同定时器1 GATA 原理图......即可 GATA=0; 仅有TCON寄存器TRX来控制 GATA=1; 有TCON TRX与外部中断INT0 INT1 C/T非模式选择位 M1M0方式选择位 M1M0 00方式0,13位定时器/计数器 011,16 112,8位初值自动重装,8位定时器/计数器 113,仅T0分成8位计数器 T1停止计数定时器控制TCON寄存器 特殊功能寄存器,88H-8FH可位寻址 复位即清零 TF1 TR1 TF0 TR0 用于定时器和计数器, IE1 IT1 IE0 IT0用于外部中断 TF1:溢出标志;利用定时器中断不需要操作; 用查询需要软件清零 TR1:GATE=1,INT1=1 TR1=1开启定时器1 IE1:外部中断请求标志 IT1=0; 电平触发方式INT1为低电平时置1否则IE1清零 IT1=0; 跳变沿沿触发方式从高到底负跳变有效定时器初值问题 时钟周期位12MHZ要计满2^16-1个数,溢出一次需要65536微妙 约等于65.5ms,50ms,就是累加5000次就溢出,则1s即是20个 50ms,65536-50000/256 TH0 %TH0*/ void timer0()interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; T0++; if(flag!=1) { if(t0==10) { t0=1; temp=_crol_(temp,1); P1=temp; } } else { if(t0%4==0) P1=~P1; if(t0==60) { TR0=0; p1=0XFF; flag1=1; } } }void timer1()interrupt 3 { TH1=(65536-50000)/256; TL0=(65536-50000)%256; t1++; if(t1==2) { t1=0; shu--; bai=shu%100; shi=shu%100/10; ge=shu%10; if(shu==398) { TR0=0; TH0=(65536-50000); TL0=(65536-50000); TR0=1; flag=1; t0=0; P1=0xff; TR1=0; } } }}

    推荐阅读