|
QQ圖片20170829180917.jpg (133.08 KB, 下載次數(shù): 115)
下載附件
2017-8-29 18:14 上傳
如上圖 用定時(shí)器只取一段方波出現(xiàn) 怎么用
使用按鍵 出現(xiàn)一段方波 也可以不用定時(shí)器
有個(gè)問題 {case 1:這個(gè)for循環(huán)執(zhí)行不了()}
#include<reg52.h>
/*****************************************************************/
unsigned char a,s,x,y,z;
int flag;
sbit ANJIAN=P2^0; //按鍵
sbit P00=P0^0;
sbit P01=P0^1;
/*------------------------------------------------
定時(shí)器初始化子程序
------------------------------------------------*/
void Init_Timer0(void)
{
TMOD |= 0x01; //使用模式1,16位定時(shí)器,使用"|"符號(hào)可以在使用多個(gè)定時(shí)器時(shí)不受影響
//TH0=0x00; //給定初值,這里使用定時(shí)器最大值從0開始計(jì)數(shù)一直到65535溢出
//TL0=0x00;
EA=1; //總中斷打開
ET0=1; //定時(shí)器中斷打開
TR0=1; //定時(shí)器開關(guān)打開
}
/*------------------------------------------------
定時(shí)器中斷子程序
50hz,每秒50個(gè)脈沖,就是100次跳變。1/100 =10ms 這是頻率
------------------------------------------------*/
void Timer0_isr(void) interrupt 1 using 1
{
TH0=(65536-50)/256; //重新賦值 12M晶振計(jì)算,指令周期1uS,
TL0=(65536-50)%256; //0.1mS方波半個(gè)周期0.05mS,
if(ANJIAN==0) //按鍵按下
{
a++; //按鍵累加
while(!ANJIAN);
}
switch(a)
{
case 1:
P01=0; //正轉(zhuǎn)
if(flag++==10) // 計(jì)數(shù)10次
{
P00=!P00; // 取反
flag=0; // 清除i
}
break;
//case 1:
//這個(gè)for循環(huán)執(zhí)行不了
// P01=0; //正轉(zhuǎn)
// for(i=0;i<5;i++)
// {
// P00=0;
// delay(50);
// P00=1;
// delay(50);
// }
// break;//
case 2:a=0;break;
default:break;
}
}
/*------------------------------------------------
主函數(shù)
------------------------------------------------*/
main()
{
while(1)
{
Init_Timer0();
}
}
//
///*------------------------------------------------
// 延時(shí)函數(shù) 11.0592MHZ z=1時(shí)精確延時(shí)1ms
//------------------------------------------------*/
//
//void delay(z)
//{
// for(x=z;x>0;x--)
// for(y=848;y>0;y--);
//}
|
|