STC单片机初始化疑问,大家看看

2019-03-24 17:05发布

最近我看了个STC初始化程序如下:

  1. void Timer0Init(void)                //2.5毫秒@12.000MHz
  2. {
  3.         AUXR &= 0x7F;                //定时器时钟12T模式
  4.         TMOD &= 0xF0;                //设置定时器模式
  5.         TMOD |= 0x01;                //设置定时器模式
  6.         TL0 = 0x3C;                //设置定时初值
  7.         TH0 = 0xF6;                //设置定时初值
  8.         TF0 = 0;                //清除TF0标志
  9.         TR0 = 1;                //定时器0开始计时
  10. }
复制代码


我的疑问是,第一,第二行,AUXR和TMOD复位后都是零,那么按位与不都变为0为么???那么怎么会成功初始化的????
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
初来乍到学习者
1楼-- · 2019-03-25 03:23
注意看第三行  TMOD |= 0x01;                //设置定时器模式
ddllxxrr
2楼-- · 2019-03-25 06:35
初来乍到学习者 发表于 2018-3-14 15:12
注意看第三行  TMOD |= 0x01;                //设置定时器模式

这个可以理解,第一行是怎么回事????
huaiqiao
3楼-- · 2019-03-25 07:47
 精彩回答 2  元偷偷看……
lehuijie
4楼-- · 2019-03-25 11:05
ddllxxrr 发表于 2018-3-14 16:06
这个可以理解,第一行是怎么回事????

TMOD&=0xf0;是把TMOD寄存器先置零,以防TMOD不是为0x00;
假设TMOD=0xff;TMOD|=0x01;TMOD就变成0xff了。
给你一个C语言程序:
#include <stdio.h>
int main()
{
        int a,b=2;
        a=0xf0;
//        b&=a;
        b|=0x01;
        printf("%d",b);

        return 0;
}
       
xiaoshishuai
5楼-- · 2019-03-25 16:31
学习一下,我对定时器也不是很了解
wsdymg
6楼-- · 2019-03-25 18:23
 精彩回答 2  元偷偷看……

一周热门 更多>