|
下面這個(gè)馬達(dá)正反轉(zhuǎn)程序是我用論壇里的紅綠燈程序改的,存在以下問(wèn)題:1.開(kāi)機(jī)直接就啟動(dòng)了,需求是按下P2^0才啟動(dòng),P2^0是點(diǎn)動(dòng)開(kāi)關(guān);
2.反轉(zhuǎn)后停止,現(xiàn)在是直接就停止了,需求在停止需保持1秒再斷開(kāi);
另外有點(diǎn)不理解的是
case 1:
start=1;cw=0;ccw=1;stop=1;這里啟動(dòng)不是關(guān)閉的嗎,為什么會(huì)通呢。
各位幫忙看看是需要改動(dòng)哪里。
感謝!
單片機(jī)源程序如下:
- #include <reg52.h>
- #define uint unsigned int
- #define uchar unsigned char
- sbit start = P2^0; //啟動(dòng)
- sbit cw = P2^1; //馬達(dá)正轉(zhuǎn)
- sbit ccw = P2^2; //馬達(dá)反轉(zhuǎn)
- sbit stop = P2^3; //馬達(dá)停止
- uchar Time_Count = 0,Flash_Count = 0,Operation_Type = 1;
- void T0_INT() interrupt 1
- {
- TH0 = -50000/256;
- TL0 = -50000%256;
- switch(Operation_Type)
- {
- case 1:
- start=1;cw=0;ccw=1;stop=1;
- if(++Time_Count != 10) return;
- Time_Count=0;
- Operation_Type = 2;
- break;
- case 2:
- start=1;cw=1;ccw=0;stop=1;
- if(++Time_Count != 100) return;
- Time_Count=0;
- Operation_Type = 3;
- break;
- case 3:
- start=1;cw=1;ccw=1;stop=0;
- if(++Time_Count != 100) return;
- Time_Count=0;
- Operation_Type = 4;
- break;
- case 4:
- start=1;cw=1;ccw=1;stop=1;
- if(++Time_Count != 10) return;
- Time_Count=0;
- break;
- }
- }
- void main()
- {
- TMOD = 0x01;
- IE = 0x82;
- TR0 = 1;
- while(1);
- }
復(fù)制代碼 |
|