|
#include <reg52.h>
sbit SEV_PWM = P1^0; //設(shè)定PWM輸出的I/O端口
unsigned char count = 0;
unsigned char SEV_conut =8;
sbit K6=P1^1;//設(shè)置兩個(gè)按鍵,代表抬起和按下。根據(jù)實(shí)際硬件資源編寫。
sbit K7=P1^2;
sbit LED=P1^3; /*延時(shí)程序*/
void delay(unsigned char i)
{
unsigned char j,k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
/*定時(shí)器T0初始化*/
void Com_Init() {
TMOD &= 0x00;
TMOD |= 0x01; //定時(shí)器T0設(shè)置成方式1
TH0 = 0xff; //定時(shí)常數(shù) 0.1ms 晶振為11.0592MHz
TL0 = 0xa4;
ET0 = 1;
TR0 = 1;
EA=1;
} /*T0中斷初始化*/
void Time0_Init() interrupt 1 {
TR0 = 0;
TH0 = 0xff; //重裝時(shí)間常數(shù) 0.1ms
TL0 = 0xa4;
if(count <= SEV_conut) //5==0° 10==90°
{
SEV_PWM = 1;
}
else {
SEV_PWM = 0;
}
count++;
if (count >= 200) //T = 20ms清零
{
count = 0;
}
TR0 = 1; //開啟T0
}
void main(){
Com_Init();
while(1) {
if(K6==0)
{
delay(10);
if(K6==0)
{
SEV_conut =5;//5代表0.5ms
count=0;
}
}
if(K7==0)
{
delay(10);
if(K7==0)
{
SEV_conut =8;
count=0;
}
}
//SEV_conut =5;//舵機(jī)恢復(fù)到0°的位置
//count=0;//讓定時(shí)器重新計(jì)數(shù)
//約延時(shí)2s
//SEV_conut =8;//8這個(gè)值是作者調(diào)試的角度,得到現(xiàn)象是觸控筆向下按壓屏幕
//count=0;
//Delay(100000);
//延時(shí)函數(shù)寫得不好,讀者可改寫。
}
}
|
|