微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 小白求助,51单片机里的TMOD怎么设置的问题

小白求助,51单片机里的TMOD怎么设置的问题

时间:10-02 整理:3721RD 点击:

如果想要用T0,设置GATE为0,定时器模式,工作在模式1,那T0应该是0001,为什么初始化TMOD的程序为TMOD|=0x01啊?我觉得假如之前TMOD为0x11的话,那么执行TMOD|=0x01后,TMOD不还是0x11吗?那不就不能设置成我想要的模式了吗?真心求教

顶顶,大佬们帮帮我吧

应该这样设置
TMOD &= 0xF0;   //定时/计数器0运行在模式1,16位模式
TMOD |= 0x0D;   //GATE0=1; C/T0#=1; M1=0; M0=1;
TH0 = 0xff;     //设置初值,初值=(65536-7)/256=FFH
TL0 = 0xf9;     //设置初值,初值=(65536-7)%256=F9H
                //初值为65529,只需要再计7个数,定时/计数器就可以溢出
ET0=1;  //允许定时/计数器0中断
EA=1;   //允许总中断
TR0=1;  //启动定时/计数器

TMOD|=0x01;
定义 定时/计数器0,工作方式1;
小编可能认为TMOD的初始状态有可能是0x11;但是在51复位以后TMOD就是0x00,很明确,在程序中小编只是对TMOD赋值一次
小编如果感觉符号 | 看不明白的话,其实可以直接TMID=0x01;
和源程序一样

谢谢!

谢谢,现在搞明白了

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top