这个比较简单,单片机按键控制方波,应用了定时器中断控制延时
单片机源程序如下:
- #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)
|