亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2684|回復: 9
打印 上一主題 下一主題
收起左側

初學單片機,在定時器一個實驗中有些不懂得地方

[復制鏈接]
跳轉到指定樓層
樓主
ID:311807 發表于 2018-4-19 17:22 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
這是我的原碼:
#include <reg52.h>
#define uchar unsigned char
uchar i=50;

void main(void)
{   
   TMOD=0x01;
   TH0=0xee;
   TL0=0x00;
   EA=1;
   ET0=1;
   P1=0;
   TR0=1;
   while(1);//循環等待中斷,讓cpu一直執行當前程序。
}

void int0() interrupt 1
{
   TH0=0xee;
   TL0=0x00;
   i--;
   if(i<=0)
   {
           P1=~P1;
           i=100;
   }
}

這是我不懂的地方:
i--;
   if(i<=0)
   {
           P1=~P1;
           i=100;
   }
為什么要設置一個i的變量去控制P1的值,而不是直接將中斷函數寫成這樣:
void int0() interrupt 1
{
   TH0=0xee;
   TL0=0x00;
   P1=~P1;
}

求各位大佬告知!!!


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

來自 2#
ID:157573 發表于 2018-4-19 20:04 | 只看該作者
初學一般是點亮LED燈,這里就當是點亮LED燈。首先,人眼有滯留效應,正如電影播放時每隔40ms播放一幅圖片,但是人眼看上去卻是連續的。同理,如果你的目的是做出“LED燈一閃一閃”的效果,通常理解,我點亮一下,再熄滅一下,在點亮一下,再……,以此循環就可以達到效果了,但是兩次點亮中間間隔要多長時間呢?如果太小(比如小于40ms),那么你看到的是一直亮著,跟放電影原理一樣。程序中,TMOD=1;是設置為16位計數器,從TH0與TL0知,程序設置從0計數到0xee00,十進制就是0到60928,若使用晶振為12MHz,則計數器每計數一次為1us,那么一次中斷計數60928次,則一次中斷間隔時間為60928us,約為60ms,間隔時間太短,人眼是看不到它閃的。中間計數50次,就是增加時間間隔,50*60=3000ms=3s,所以你看到大約3s閃一次。

評分

參與人數 1黑幣 +80 收起 理由
admin + 80 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:310442 發表于 2018-4-19 18:00 | 只看該作者
因為這個50是讓你定時器中斷50次的計數   最后總的定時時間就是中斷一次的時間乘50.    如果不這樣   以單片機定時器的最大計數65536也就是65ms  看不出實驗效果

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

地板
ID:261871 發表于 2018-4-19 18:27 | 只看該作者
定時器1 的上限
回復

使用道具 舉報

5#
ID:261871 發表于 2018-4-19 18:27 | 只看該作者
ltpsweet 發表于 2018-4-19 18:00
因為這個50是讓你定時器中斷50次的計數   最后總的定時時間就是中斷一次的時間乘50.    如果不這樣   以單 ...

定時時間太短了
回復

使用道具 舉報

6#
ID:311807 發表于 2018-4-19 18:47 | 只看該作者
ltpsweet 發表于 2018-4-19 18:00
因為這個50是讓你定時器中斷50次的計數   最后總的定時時間就是中斷一次的時間乘50.    如果不這樣   以單 ...

懂了,謝謝大佬
回復

使用道具 舉報

7#
ID:311967 發表于 2018-4-19 20:29 | 只看該作者
原程序是設計的每進100次中斷才進行一次電平翻轉,如果按你的改法,就變成了每次進中斷都會翻轉一次電平了

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

8#
ID:46065 發表于 2018-4-19 20:33 | 只看該作者
第一次是50次倒計數,之后是100次倒計數,就是定時器每計數100次P1取反一次。

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

9#
ID:213173 發表于 2018-4-19 20:48 | 只看該作者
ltpsweet 發表于 2018-4-19 18:00
因為這個50是讓你定時器中斷50次的計數   最后總的定時時間就是中斷一次的時間乘50.    如果不這樣   以單 ...

這樣設置定時器是5ms中斷一次,i--;   if(i<=0) 是為了得到500ms  P1翻轉一次。

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

10#
ID:293933 發表于 2018-4-20 17:38 | 只看該作者
那uchar i的初值為什么不直接設為100呢,有什么意義,會用在什么場景中
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表