找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2341|回復(fù): 6
收起左側(cè)

請(qǐng)問(wèn)單片機(jī)讓交通燈閃爍5s的思路是什么?定時(shí)器還是設(shè)置空程序

[復(fù)制鏈接]
ID:897410 發(fā)表于 2021-4-12 16:57 | 顯示全部樓層 |閱讀模式
是讓信號(hào)通1s斷1s嗎?這個(gè)1s是用定時(shí)器 還是 直接設(shè)置空程序
回復(fù)

使用道具 舉報(bào)

ID:716656 發(fā)表于 2021-4-12 20:29 | 顯示全部樓層
  1. /*******************************************************

  2. 紅綠燈//需驗(yàn)證程序

  3. *******************************************************/

  4. #include "reg51.h"
  5. #define uchar unsigned char
  6. #define uint unsigned int
  7. sfr AUXR=0x8E;

  8. uchar shijian=0,aa=0,deng=3;

  9. void init()
  10. {
  11.         AUXR &= 0x7F;
  12.         TMOD &= 0xF0;
  13.         TL0 = 0x00;
  14.         TH0 = 0x4C;
  15.         TF0 = 0;
  16.         TR0 = 1;
  17.         ET0=1;
  18.         EA=1;
  19.         P0 = 0xff;
  20. }

  21. void main()
  22. {
  23.         init();
  24.         while(1)
  25.         {
  26.                 if(shijian==0)
  27.                 {
  28.                         switch(deng)
  29.                         {
  30.                                 case 0:shijian=70;deng=1;break;//綠
  31.                                 case 1:shijian=70;deng=2;break;//黃
  32.                                 case 2:shijian=70;deng=3;break;//紅
  33.                                 case 3:shijian=70;deng=0;break;//黃
  34.                         }
  35.                 }
  36.         /*時(shí)間每秒減一*/

  37.                 switch(deng)
  38.                 {
  39.                         case 0:
  40.                                                 if(shijian%2==0)
  41.                                                 P1=0x00;
  42.                                                 if(shijian%2==1)
  43.                                                 P1=0xff;
  44.                                                 break;
  45.                         case 1:P1=0xff;break;//綠
  46.                         case 2:
  47.                                                 if(shijian%2==0)
  48.                                                 P1=0x00;
  49.                                                 if(shijian%2==1)
  50.                                                 P1=0xff;
  51.                                                 break;
  52.                         case 3:P1=0x00;break;//紅
  53.                 }
  54.         }
  55. }

  56. void T0_time() interrupt 1
  57. {

  58.         aa++;
  59.                 if(aa==50)
  60.         {
  61.                 aa=0;
  62.                 shijian--;
  63.         }
  64. }
  65. 簡(jiǎn)單的這樣寫(xiě)就可以
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

ID:476215 發(fā)表于 2021-4-12 23:25 | 顯示全部樓層
從穩(wěn)定性來(lái)看一定是使用定時(shí)器,然后在定時(shí)器里面加計(jì)數(shù)判斷是否到了時(shí)間。
回復(fù)

使用道具 舉報(bào)

ID:894154 發(fā)表于 2021-4-13 07:57 | 顯示全部樓層
通一斷一閃的太慢了 通0.5斷0.5吧
0.5s進(jìn)一次定時(shí)器對(duì)IO進(jìn)行一次取反就可以實(shí)現(xiàn)閃爍了
回復(fù)

使用道具 舉報(bào)

ID:897410 發(fā)表于 2021-4-13 14:08 | 顯示全部樓層
ANT1987 發(fā)表于 2021-4-13 07:57
通一斷一閃的太慢了 通0.5斷0.5吧
0.5s進(jìn)一次定時(shí)器對(duì)IO進(jìn)行一次取反就可以實(shí)現(xiàn)閃爍了

感謝, 已經(jīng)寫(xiě)好了 就是用的 取反
回復(fù)

使用道具 舉報(bào)

ID:900662 發(fā)表于 2021-4-13 17:07 | 顯示全部樓層
定時(shí)器定5毫秒進(jìn)中斷取反就可以了,程序的話(huà)太麻煩了吧。我覺(jué)得你可以設(shè)置一個(gè)標(biāo)志位,計(jì)數(shù)器進(jìn)一次中斷,標(biāo)志位改變一次,對(duì)應(yīng)你的各種燈,用循環(huán)通過(guò)你進(jìn)中斷的次數(shù)控制換燈。
回復(fù)

使用道具 舉報(bào)

ID:897410 發(fā)表于 2021-4-13 17:32 | 顯示全部樓層

感謝 ,不過(guò)我沒(méi)學(xué)過(guò)C,已經(jīng)用匯編寫(xiě)出來(lái)了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表