|
這個(gè)是學(xué)習(xí)51過程中非常經(jīng)典的一些程序,,非常適合初學(xué)者
0.png (49.29 KB, 下載次數(shù): 39)
下載附件
2017-5-5 22:56 上傳
AD09原理圖與pcb:
0.png (55.08 KB, 下載次數(shù): 40)
下載附件
2017-5-5 22:57 上傳
提取一個(gè)狀態(tài)機(jī)按鍵程序:
- #include <STC12C5A60S2.H>
- sbit K_OUT4 = P2^7;
- sbit K_OUT3 = P2^6;
- sbit K_OUT2 = P2^5;
- sbit K_OUT1 = P2^4;
- sbit K_IN1 = P2^0;
- sbit K_IN2 = P2^1;
- sbit K_IN3 = P2^2;
- sbit K_IN4 = P2^3;
- bit KeySta = 1;
- void UART_Sent(char dat);
- void main()
- {
- bit backup = 1;
- unsigned char cnt = 0;
- K_OUT4 = 0;
- K_IN1 = 1;
- EA=1;
-
- /*第一步:設(shè)置串口工作模式*/
- SM0 = 0;
- SM1 = 1;
- /*第二步:設(shè)置波特率發(fā)生器*/
- AUXR |= (1 << 0); //選擇:獨(dú)立波特率發(fā)生器
- AUXR |= (1 << 2); //每一個(gè)時(shí)鐘計(jì)數(shù)一次
- BRT = 0xE6;
- AUXR |= (1 << 4); //開啟獨(dú)立波特率發(fā)生器
- TMOD = 0x01; //使用定時(shí)器0的模式1:即16位計(jì)數(shù)器,優(yōu)點(diǎn):可裝載的值較多,計(jì)時(shí)可較長(zhǎng)
- TH0 = 0xF8;
- TL0 = 0xCD;
- ET0=1;
- TR0=1;
- while(1)
- {
- if(KeySta != backup)
- {
- if(backup == 0)
- {
- cnt++;
- if(cnt >= 10)
- {
- cnt = 0;
- }
- UART_Sent(cnt+48);
- }
- backup = KeySta;
- }
- }
- }
- void UART_Sent(char dat)
- {
- SBUF=dat;
- while(!TI);
- TI=0;
- }
- void timer_0() interrupt 1
- {
- static unsigned char keybuf =0xff;
- TH0 = 0xF8;
- TL0 = 0xCD;
-
- keybuf = (keybuf <<1) |K_IN1;
- if(keybuf == 0x00)
- {
- KeySta = 0;
- }
- else if(keybuf == 0xFF)
- {
- KeySta = 1;
- }
- else
- {
- }
- }
復(fù)制代碼
下載:
51初學(xué)者各個(gè)模塊程序.zip
(625.45 KB, 下載次數(shù): 19)
2017-5-5 21:38 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
|