您的位置 首页 IOT

学习51单片机有感

这里有专门的一个定义特殊功能寄存器的位变量。bit和sbit都是C51扩展的变量类型。典型应用是:sbitP0_0=P0^0;//即定义P0_0为P0口的第…

这儿有专门的一个

界说特别功用寄存器位变量

  bit和sbit都是C51扩展的变量类型。

典型应用是:sbit P0_0=P0^0;//即界说P0_0为P0口的第1位,以便进行位操作。

运用异或操作取位,进行,,,,,,

在设置守时器的时分发现下列的代码

THO = (65536 – 5000)/256;//赋值高8位

TLO = (65536 – 5000)%256;//赋值低8位

你说这与直接将65536 – 5000 赋予寄存器 有什么区别,这样有什么优点?怎样有种脱了裤子放屁的感觉,—-后来了解到原来是两个8位寄存器组成的,怪不得要别离赋值。

//产生 3:1的脉冲 灯亮1s 平息3s  替换相间 #include           //  包括51单片机寄存器界说的头文件unsigned int beforeFlag = 0,afterFlag = 0;sbit Signal = P1^1;void beforeHalf(void) interrupt 1 using 1{beforeFlag++;TR1 = 1;//open oppsiteTR0 = 0;// close myselfTL0 = 0x06;//250 us}void afterHalf(void) interrupt 3 using 2 //这儿的中止号不能乱写哦,0-4..。后边都是空的没用{afterFlag++;TR0 = 1;//open oppsiteTR1 = 0;// close myselfTH0 = 0x06;//250 us}void main(void){Signal = 1;TMOD = 0x03;//咱们在这儿运用两个守时器形如TMOD = 0x11并不可行。这样的话,中止从未被激活。调试器里的statue 一向添加,(簿本上)》》》?????EA = 1;ET0 = 1;ET1 = 1;TH0 = 0x6;TL0 = 0x6;TR0 = 1;TR1 = 1;//这两句赋值后 TL和TH会产生改动 (由于是片内守时,所以一翻开便开端计时)while(1){if(beforeFlag == 12000)//3s{Signal = ~Signal;//在这儿咱们发现运用Signal = 0;然后下面的运用 Signal = 1并不可行,调试发现一个beforeFlag++的守时器 一向都未关过(尽管上面有关的查办TR1 = 0;),这是为什么呢?(簿本上测试通过,用的是3版别的)beforeFlag = 0;}if(afterFlag == 4000)//1s{Signal = ~Signal;afterFlag = 0;}}return ;}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/iot/264892.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部