這個比較簡單,單片機按鍵控制方波,應用了定時器中斷控制延時
單片機源程序如下:
- #include"reg51.h"
- typedef unsigned char u8;
- typedef unsigned int u16;
- unsigned int number;
- sbit k1=P3^1;
- sbit k2=P3^0;
- sbit k3=P3^2;
- sbit pulse_out=P1^0;
- u16 number=0;
- u16 count=0;
- //定義延時函數
- void delay(u16 ms)
- {
- u16 i,j;
- for(i=0;i<ms;i++);
- for(j=110;j>0;j--);
- }
- //定時器1初始化
- void Time()
- {
- TMOD=0x01;
- TH0=(65536-10)/256;
- TL0=(65536-10)%256;
- EA=1;
- ET0=1;
- TR0=1;
- }
- //定義按鍵掃描程序
- void keyscan()
- {
- if((k1==0)&&(count>0))
- { //按鍵1,頻率加
- delay(5);
- if(k1==0)
- {
- count=count*2;
- number=0;
- delay(1000);
- }
- while(!k1);
- }
- if((k2==0)&&(count<1000))
- { //按鍵2,頻率減
- delay(5);
- if(k2==0)
- {
- count=count/2;
- number=0;
- delay(1000);
- }
- while(!k2);
- }
-
- }
- void main()
- {
- count =100;//定時器每0.01ms中斷一次,計數100次則反轉IO,10ms一個周期,即500hz
- Time();
- while(1)
- {
- keyscan();
- }
- }
- //中斷處理程序,計數并翻轉IO
- void T1_time() interrupt 1
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
51單片機練習.rar
(46.51 KB, 下載次數: 26)
2017-7-14 16:16 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|