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;
}
}
}}
推荐阅读
- 芯灵思SinlinxA33开发板Linux内核定时器编程
- STM32F4|STM32F4 TIM6 TIM7 基本定时器
- 单片机|单片机初学者做项目为什么这么难(单片机初学者心得有哪些)
- 单片机|自学单片机好找工作吗(会单片机能找什么工作?)
- 单片机|keil把源代码生成lib的方法
- c语言|一文搞懂栈(stack)、堆(heap)、单片机裸机内存管理malloc
- 单片机|Arduino、arm、树莓派、单片机四者有什么不同()
- 闭包-定时器-BOM
- 全志A33开发板Linux内核定时器编程
- javascript|javascript--21--定时器