|
|
原理圖,仿真圖
C[}JA4H@Y~9T056QZGQ8$V1.png (40.17 KB, 下載次數(shù): 37)
下載附件
2019-9-10 14:06 上傳
程序
- #include <reg51.h>
- #include <intrins.h>
- char code str_warning[] = "Warning of illegal entry into vehicles!\n\r";
- bit warning_enable = 0;
- sbit K1 = P2^0;
- sbit LED = P2^1;
- void uart_init(void)
- {
- TMOD = 0x20; // 定時(shí)器1工作于8位自動(dòng)重載模式, 用于產(chǎn)生波特率
- TH1 = 0xFD; // 波特率[url=mailto:9600@11.0592MHz]9600@11.0592MHz[/url]
- TL1 = 0xFD;
- SCON = 0x50; // 設(shè)定串行口工作方式
- PCON&= 0xef; // 波特率不倍增
- TR1 = 1; // 啟動(dòng)定時(shí)器1
- }
- void send_warning()
- {
- unsigned char i = 0;
- while(str_warning[i] != '\0')
- {
- SBUF = str_warning[i];
- while(!TI); // 等特?cái)?shù)據(jù)傳送
- TI = 0; // 清除數(shù)據(jù)傳送標(biāo)志
- i++; // 下一個(gè)字符
- }
- }
- void delay_ms(unsigned int ms)
- {
- unsigned char i;
- while(ms--)
- {
- for(i = 0; i < 120; i++);
- }
- }
- void main()
- {
- uart_init();
- LED = !warning_enable;
- EX0 = 0;
- IT0 = 1;
- EA = 1;
- while(1)
- {
- if(K1 == 0) // 掃描按鍵
- {
- delay_ms(10); // 延時(shí)去抖動(dòng)
- if(K1 == 0) // 再次掃描
- {
- while(K1 == 0);
- warning_enable = !warning_enable; // 報(bào)警使能標(biāo)志
- LED = !warning_enable; // led指示燈
- IE0 = 0; // 清除中斷標(biāo)志
- EX0 = warning_enable; // 使能或禁止外部中斷
- }
- }
- }
- }
- void exit0() interrupt 0
- {
- send_warning(); // 觸發(fā)中斷則發(fā)送報(bào)警信息
- }
復(fù)制代碼 |
|