历史上的今天
今天是:2025年07月30日(星期三)
2018年07月30日 | 51定时器初始化步骤
2018-07-30 来源:eefocus
定时器初始化需要六步:
void TimerInit()
{
TMOD = 0X01;
TH0 = (65536 - X) /256;//(65536-X)为定时器初值,如定时10ms,则X=1000
TL0 = (65536 - X)%256;
EA = 1;
ET0 = 1;
TR0 = 1;
}
中断函数:
void Timer0 interrupt 1
{
TH0 = (65536-X)/256;
TL0 = (65536-X)%256;
num++;
if(num>100)
num = 1;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Step1: 设置系统CLK
Setp2: 设置timer工作模式
TMOD = 0x20;
Step3: 设置timer clk源
CKCON = 0x80;
step4: 设置定时值
TL1 = 0x0F;
TH1 = 0x0F;
step5: 启动timer
TCON = 0x40;
(TR1 = 1)
step6: timer中断允许
IE = 0x80
(ET1 = 1)
step7: 全部中断使能
EA = 1;
step8: 编写中断函数
void Timer1_ISR (void) interrupt 3
{
static int counter = 0;
if((counter++) == LED_TOGGLE_RATE)
{
LED = ~LED; // Toggle the LED
counter = 0;
}
}
史海拾趣
|
以前我就是这样,在弄51时,我会沉浸在代码的欢乐中. 早段时间算学ARM,最近又参加众多的面试.慢慢地我喜欢看帖回帖,更喜欢写帖子... 当看到某些人能写出一篇耐人寻味的文章时,看后佩服之情油然而生;再看那回帖量成千上万,楼主 ...… 查看全部问答> |
|
刚搜索了一下坛子里的贴库,确认没有该话题 我不是搞产品研发的,就一修理工而已, 所以就通俗地讲一下温度校验仪的原理, 希望能够抛砖引玉,引发一定范围的讨论。 利用标准热感应器件输入的高精度数显控制表, 将校验腔的温度恒定在设定值 ...… 查看全部问答> |
|
我用的是AD0804,按时序图写出的状态机程序,但是在数码管老是无法正常显示,数字不是老跳就是定在一个值不动,我让其每隔0.5秒就转换一次 always@(posedge clk) if(sw) begin cs… 查看全部问答> |
|
1,空闲模式,2440数据手册上说IDLE_BIT:Enter IDLE mode. This bit is not cleared automatically.这样的话我如果手动进入空闲模式,被任何中断唤醒后都进入Normal,我在那个中断里把该位重新置零呢? 2,很多手机用的windows monile系统,当手 ...… 查看全部问答> |
|
我做了块mpc862的目标板. 使用bootrom引导,然后用网口把VxWorks映像下载到板子上. 超级终端的信息: Starting at xxxx 之后就没有信息了. 看tornador一本书,说可能是引导映像的问题. 请给点儿建议,非常感谢… 查看全部问答> |
|
把一个二进制转成BCD码,使用逻辑分析仪抓的数据,输入的数据最大为189975,加个60000后最大249975,平时这个数据是不断变化的,最大会有正负1000左右的跳动。现在的问题是:假如输入为100000,那么正确的输出应该是1、6、0,让我想不明白的是,最 ...… 查看全部问答> |
|
想做个廉价的气体探测器吗?用Arduino便可以实现,前提是计算量不复杂的话。所以PM2.5估计是测不了,一是传感器成本可能会高,ADC器件性能也不够,至于计算能力就不知道了。详细链接请点击:http://www.instructables.com/id/How-To-Smell-Pollutan ...… 查看全部问答> |




