找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

关于51单片机定时/计数器的疑惑

查看数: 568 | 评论数: 4 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2023-10-13 20:41

正文摘要:

下面的代码来自STC89C52的手册,代码如下: #include <reg52.h> #define FOSC 18432000L #define T1MS (65535-FOSC/12/1000) sbit TEST_LED=P2^0; unsigned int count; void tm0_isr() interrupt 1 ...

回复

ID:517951 发表于 2023-10-14 09:08
定时器程序可以自己写, 总体思路是晶振频率(12分频, 可以选择不12分频) 一次 ,定时器就加或减一下. 预设的TH0,TL0 溢出了就进入定时器中断服务函数做处理(翻转IO口电平).  
定时器有一定的精度, 但要求高就要换更高规格的时钟芯片了.
ID:1064915 发表于 2023-10-14 08:29
常量也是有类型的,不同类型有不同的存储空间。在常数后面加L,表示此常量为long类型的,占4字节空间.
ID:213173 发表于 2023-10-14 07:39
//#define FOSC 18432000L//晶振频率18.432MHz
//#define FOSC 12000000L//晶振频率12.0MHz
#define FOSC 11059200L//晶振频率11.0592MHz
//#define T1MS (65535-FOSC/12/1000)
#define T1MS (65536-FOSC/12/1000)
ID:1085441 发表于 2023-10-14 00:52
1,18432000表示晶振频率是18.432MHz
2,单片机平常用的是11.0592M或22.1184M,可能你的单片机晶振频率是这个,与例子不一样,所以定时不准确

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表