單片機C語言程序設計:定時器控制交通指示燈
/* 名稱:定時器控制交通指示燈
說明:東西向綠燈亮 5s 後,黃燈閃爍,閃爍 5 次亮紅燈,
紅燈亮後,南北向由紅燈變成綠燈,5s 後南北向黃燈閃爍,
閃爍 5 次後亮紅燈,東西向綠燈亮,如此往複。
*/
#include
#define uchar unsigned char
#define uint unsigned int
sbit RED_A=P0^0; //東西向指示燈
sbit YELLOW_A=P0^1;
sbit GREEN_A=P0^2;
sbit RED_B=P0^3; //南北向指示燈
sbit YELLOW_B=P0^4;
sbit GREEN_B=P0^5;
//延時倍數,閃爍次數,操作類型
變數
uchar Time_Count=0,Flash_Count=0,Operation_Type=1;
//定時器 0 中斷函數
void T0_INT() interrupt 1
{
TL0=-50000/256;
TH0=-50000%256;
switch(Operation_Type)
{
case 1: //東西向綠燈與南北向紅燈亮 5s
RED_A=0;YELLOW_A=0;GREEN_A=1;
RED_B=1;YELLOW_B=0;GREEN_B=0;
if(++Time_Count!=100) return; //5s(100*50ms)切換
Time_Count=0;
Operation_Type=2;
break;
case 2: //東西向黃燈開始閃爍,綠燈關閉
if(++Time_Count!=8) return;
Time_Count=0;
YELLOW_A=~YELLOW_A;GREEN_A=0;
if(++Flash_Count!=10) return; //閃爍
Flash_Count=0;
Operation_Type=3;
break;
case 3: //東西向紅燈與南北向綠燈亮 5s
RED_A=1;YELLOW_A=0;GREEN_A=0;
RED_B=0;YELLOW_B=0;GREEN_B=1;
if(++Time_Count!=100) return; //5s(100*50ms)切換
Time_Count=0;
Operation_Type=4;
break;
case 4: //南北向黃燈開始閃爍,綠燈關閉
if(++Time_Count!=8) return;
Time_Count=0;
YELLOW_B=~YELLOW_B;GREEN_A=0;
if(++Flash_Count!=10) return; //閃爍
Flash_Count=0;
Operation_Type=1;
break;
}
}
//主程序
void main()
{
TMOD=0x01; //T0 方式 1
IE=0x82;
TR0=1;
while(1);
}
零基礎小白到大神之路,歡迎加裙 四八七八七五零零四,群里有免費C++課程,還有大量乾貨哦
※程序員必知的6個好習慣
※為什麼具有編程思維的孩子更容易成功?
※做代碼審查必須得有工具,推薦N個最佳代碼審查工具
※實戰黑客是如何通過釣魚wifi 盜取密碼的?
※關於前端開發,500位工程師總結出了8款「最牛」編程語言工具
TAG:IT技術java交流 |
※馴服定時器和線程
※微創課堂◇定時器與計數器
※陳若儀稱Kimi沉迷於魔方,玩平板還被限時,自配計時器好自律
※如何使用定時器做脈衝計數?
※奧特曼為何還不廢除彩色計時器的設定!
※蘋果發布內測版 HomePod 固件,可接打電話、設置多個計時器
※泰塔斯奧特曼新設定公開 胸口的勳章可不是計時器
※App Store限免:有趣的重力彈球&做菜計時器&列車調度員
※賽羅奧特曼無限形態SHF勁爆來襲,計時器可替換,武器為賽羅大刀
※賽羅奧特曼雙計時器設定引猜想,我來告訴你答案!
※中國科大在單細胞水平上創建熒光計時器用以檢測致病持留菌
※能計算地球年齡的計時器
※奧特曼胸前的彩色計時器有什麼作用?
※擁有彩色計時器就能戰鬥,這類奧特曼說:我也要彩色計時器
※領略灰熊隊主場場館特色:NBA首個使用透明計時器的球場 低調奢華
※灰熊主場24秒計時器故障,現場DJ倒計時報數
※一個沙漏計時器,鎖定犯罪嫌疑人!
※Apple Watch用戶終於能對部分預裝應用說不了 包括鬧鐘、定時器等
※Systemd 定時器:三種使用場景
※關於霍華德你不知道的5件事:扣翻計時器只有他,唯一單換詹姆斯