找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2569|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

求助用定時(shí)器只取一段方波出現(xiàn) 怎么用

[復(fù)制鏈接]
回帖獎(jiǎng)勵(lì) 5 黑幣 回復(fù)本帖可獲得 5 黑幣獎(jiǎng)勵(lì)! 每人限 1 次
跳轉(zhuǎn)到指定樓層
樓主



如上圖   用定時(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--);
//}







分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:229930 發(fā)表于 2017-8-29 20:45 | 只看該作者
定時(shí)器在中斷的時(shí)候電壓反轉(zhuǎn)就行了,定時(shí)器做最好。要精確的話,直接用匯編編寫
回復(fù)

使用道具 舉報(bào)

板凳
ID:123289 發(fā)表于 2017-8-31 20:17 | 只看該作者
1、設(shè)置一個(gè)寄存器R_count。
2、按1,就讓R_count=10,按2,就讓R_count=20。
3、做一個(gè)實(shí)現(xiàn)題圖的子程序SUB_plus。
4、如果R_count<>0,就調(diào)用SUB_plus子程序R_count次,完成后將R_count清0;如果R_count=0就不調(diào)。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表