52单片机定时器/计数器编程汇总
来源:互联网 发布:java基础环境搭建 编辑:程序博客网 时间:2024/06/07 14:15
/*----------------------------------------------------------------------
TMOD (89H)
T1 T0
GATE C/T` M1 M0 GATE C/T` M1 M0
------------------------------------------------------------------------
GATE=0时,TR0=1,T0就开始定时/计数
GATE=1时,TR0=1,INT0`=1,T0才开始定时/计数
C/T`=0,计数;C/T`=1,定时
M1 M0 工作方式 功能说明
0 0 方式0 13位定时/计数器(0~8192)
0 1 方式1 16位定时/计数器(0~65536)
1 0 方式2 可自动重载的8位定时/计数器(0~256)
1 1 方式3 定时/计数器0分为两个8位的计数器,关闭T1
------------------------------------------------------------------------
TCON (88H)
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
8FH 8EH 8DH 8CH 8BH 8AH 89H 88H
------------------------------------------------------------------------
TF0/TF1=1,定时/计数器T0/T1溢出
TR0/TR1=0,定时/计数器T0/T1停止计数
TR0/TR1=1,GATE=0,定时/计数器T0/T1开始计数
TR0/TR1=1,GATE=1,INT0`=1/INT1`=1,定时/计数器T0/T1开始计数
IT0/IT1=1,外部中断INT0`/INT1`为边沿触发
IT0/IT1=0,外部中断INT0`/INT1`为低电平触发
IE0/IE1,外部中断INT0`/INT1`有中断请求信号时,置1
------------------------------------------------------------------------
IE (A8H)
EA - - ES ET1 EX1 ET0 EX0
AFH AEH ADH ACH ABH AAH A9H A8H
EA=1:允许所有中断 EA=0:禁止所有中断
ES=1:允许串行口中断 ES=0:禁止串行口中断
ET1=1:允许T1中断 ET1=0:禁止T1中断
EX1=1:允许INT1`中断 EX1=0:禁止INT1`中断
ET0=1:允许T0中断 ET0=0:禁止T0中断
EX0=1:允许INT0`中断 EX0=0:禁止INT0`中断
----------------------------------------------------------------------*/
/*---------------------------------------------------------
定时器初始化程序
-----------------------------------------------------------*/
void Init_Timer()
{
TMOD |= 0x01;
/* ---------------------------------------------------------------------------------
工作方式0 工作方式1 工作方式2 工作方式3
定时器0选用 0x00 0x01 0x02 0x03
定时器1选用 0x00 0x10 0x20 0x30
计数器0选用 0x04 0x05 0x06 0x07
计数器1选用 0x40 0x50 0x60 0x70
---------------------------------------------------------------------------------*/
TH0=0x00; //16位:(65536-X)/256 13位:(8192-X)/256
TL0=0x00; //16位:(65536-X)%256 13位:(8192-X)%256
EA=1; //总中断打开
ET0=1; //定时器0中断打开
TR0=1; //定时器0开关打开
}
/*---------------------------------------------------------
定时器中断子程序
interrupt 0 指明是外部中断0 using 0 是第0组寄存器
interrupt 1 指明是定时器中断0 using 1 是第1组寄存器
interrupt 2 指明是外部中断1 using 2 是第2组寄存器
interrupt 3 指明是定时器中断1 using 3 是第3组寄存器
interrupt 4 指明是串行口中断
---------------------------------------------------------*/
void Timer_isr() interrupt 1 using 1
{
TH0=0x00; //需重新赋值,除工作方式2外
TL0=0x00;
}
TMOD (89H)
T1 T0
GATE C/T` M1 M0 GATE C/T` M1 M0
------------------------------------------------------------------------
GATE=0时,TR0=1,T0就开始定时/计数
GATE=1时,TR0=1,INT0`=1,T0才开始定时/计数
C/T`=0,计数;C/T`=1,定时
M1 M0 工作方式 功能说明
0 0 方式0 13位定时/计数器(0~8192)
0 1 方式1 16位定时/计数器(0~65536)
1 0 方式2 可自动重载的8位定时/计数器(0~256)
1 1 方式3 定时/计数器0分为两个8位的计数器,关闭T1
------------------------------------------------------------------------
TCON (88H)
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
8FH 8EH 8DH 8CH 8BH 8AH 89H 88H
------------------------------------------------------------------------
TF0/TF1=1,定时/计数器T0/T1溢出
TR0/TR1=0,定时/计数器T0/T1停止计数
TR0/TR1=1,GATE=0,定时/计数器T0/T1开始计数
TR0/TR1=1,GATE=1,INT0`=1/INT1`=1,定时/计数器T0/T1开始计数
IT0/IT1=1,外部中断INT0`/INT1`为边沿触发
IT0/IT1=0,外部中断INT0`/INT1`为低电平触发
IE0/IE1,外部中断INT0`/INT1`有中断请求信号时,置1
------------------------------------------------------------------------
IE (A8H)
EA - - ES ET1 EX1 ET0 EX0
AFH AEH ADH ACH ABH AAH A9H A8H
EA=1:允许所有中断 EA=0:禁止所有中断
ES=1:允许串行口中断 ES=0:禁止串行口中断
ET1=1:允许T1中断 ET1=0:禁止T1中断
EX1=1:允许INT1`中断 EX1=0:禁止INT1`中断
ET0=1:允许T0中断 ET0=0:禁止T0中断
EX0=1:允许INT0`中断 EX0=0:禁止INT0`中断
----------------------------------------------------------------------*/
/*---------------------------------------------------------
定时器初始化程序
-----------------------------------------------------------*/
void Init_Timer()
{
TMOD |= 0x01;
/* ---------------------------------------------------------------------------------
工作方式0 工作方式1 工作方式2 工作方式3
定时器0选用 0x00 0x01 0x02 0x03
定时器1选用 0x00 0x10 0x20 0x30
计数器0选用 0x04 0x05 0x06 0x07
计数器1选用 0x40 0x50 0x60 0x70
---------------------------------------------------------------------------------*/
TH0=0x00; //16位:(65536-X)/256 13位:(8192-X)/256
TL0=0x00; //16位:(65536-X)%256 13位:(8192-X)%256
EA=1; //总中断打开
ET0=1; //定时器0中断打开
TR0=1; //定时器0开关打开
}
/*---------------------------------------------------------
定时器中断子程序
interrupt 0 指明是外部中断0 using 0 是第0组寄存器
interrupt 1 指明是定时器中断0 using 1 是第1组寄存器
interrupt 2 指明是外部中断1 using 2 是第2组寄存器
interrupt 3 指明是定时器中断1 using 3 是第3组寄存器
interrupt 4 指明是串行口中断
---------------------------------------------------------*/
void Timer_isr() interrupt 1 using 1
{
TH0=0x00; //需重新赋值,除工作方式2外
TL0=0x00;
}
阅读全文
0 0
- 52单片机定时器/计数器编程汇总
- 单片机 计数器与定时器
- 单片机_定时器/计数器
- 51单片机-定时器/计数器
- 51单片机定时器/计数器
- 单片机C语言编程-定时器/计数器(查询方式)
- 单片机C语言编程-定时器/计数器(中断方式)
- 单片机C语言编程-定时器/计数器(计数方式)
- 单片机控制定时器或计数器之模块化编程
- 51单片机的定时器/计数器
- 单片机 定时器计数器的相关
- 单片机的定时器与计数器
- 再谈51系列(包括52)单片机定时器/计数器
- 单片机定时器学习汇总
- C51单片机定时器/计数器控制字设置
- 51单片机定时器计数器中断总结
- 51单片机定时器计数器中断总结
- 51单片机中的定时器和计数器
- XListView主方法内
- 蒙特卡洛树和alpha go
- 5.9成绩if-else语句
- POJ
- 姓名+年龄+性别+密码+住址判断添加到表格(批量删除)
- 52单片机定时器/计数器编程汇总
- java编程规范之java命名规范
- jQuery案例
- ACM训练周末总结—11月12日
- weblogic部署web项目jar文件冲突
- while语句
- hdu-1233最小生成树并查集求解
- 【java】使用for循环求1-10的和;
- AndroidStuidio远程依赖