標(biāo)題:
單片機按鍵控制是成功的?怎么樣把按鍵控制,換為串口控制,求指導(dǎo)
[打印本頁]
作者:
qwettyuio
時間:
2021-5-6 16:41
標(biāo)題:
單片機按鍵控制是成功的?怎么樣把按鍵控制,換為串口控制,求指導(dǎo)
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
code tabup[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};
code tabdowm[]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};
void delay(uint z);
int i;
sbit S2=P3^0;
sbit S3=P3^1;
sbit S4=P3^2;
keyval=0;
void moveup() //正轉(zhuǎn)
{
for(i=0;i<8;i++)
{
P1=tabup[i];
delay(1);
}
}
void movedowm() //反轉(zhuǎn)
{
for(i=0;i<8;i++)
{
P1=tabdowm[i];
delay(1);
}
}
void delay (uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void stop()
{
P1=0xff;
}
void main(void)
{
TMOD=0x01; //使用定時器T0的模式1
TR0=0; //給定時器T0賦初值并關(guān)閉T0
TH0=(65536-500)/256; //定時器TH0賦初值為500
TL0=(65536-500)%256; //定時器TL0賦初值為500
EA=1; //開總中斷
ET0=1; //定時器T0中斷允許
TR0=1; //啟動定時器T0,這里必須要啟動,因為大循環(huán)里
while(1) //要給keyval賦值,而賦值語句在中斷服務(wù)函數(shù)里
{
switch(keyval) //根據(jù)按鍵值keyval選擇待執(zhí)行的功能
{
case 1:moveup(); break; //按鍵S1按下,正轉(zhuǎn)
case 2:movedowm(); break; //按鍵S2按下,反轉(zhuǎn)
case 3:stop(); break; //按鍵S3按下,停轉(zhuǎn)
}
}
}
/*************************************************
函數(shù)功能:定時器T0的中斷服務(wù)子程序
**************************************************/
void Time0_serve(void) interrupt 1
{
TH0=(65536-200)/256; //定時器T0的高8位賦初值
TL0=(65536-200)%256; //定時器T0的低8位賦初值
if((P3&0xff)!=0xff) //檢測是否有按鍵按下
{
delay(50); //延時一段時間再去檢測
if((P3&0xff)!=0xff) //再次檢測是否確實有按鍵按下
{
if(S2==0) //按鍵S1被按下
keyval=1; //給keyval賦值
if(S3==0) //按鍵S2被按下
keyval=2; //給keyval賦值
if(S4==0) //按鍵S3被按下
keyval=3; //給keyval賦值
}
}
}
復(fù)制代碼
作者:
51hei**1140
時間:
2021-5-6 18:05
你好!
增加串口部分的程序,串口接收的時候賦值;
keyval = SBUF;
switch(keyval) //根據(jù)按鍵值keyval選擇待執(zhí)行的功能
{
case 1:moveup(); break; //按鍵S1按下,正轉(zhuǎn)
case 2:movedowm(); break; //按鍵S2按下,反轉(zhuǎn)
case 3:stop(); break; //按鍵S3按下,停轉(zhuǎn)
}
作者:
birdzhyli
時間:
2021-5-6 21:49
想要串口控制,首先要啟動串口,串口初始化,設(shè)置波特率,然后串口中斷處理函數(shù)中可以用樓上的這一句: keyval = SBUF;
然后你需要有一個串口連接,串口發(fā)送的上位機或是其它單片機來發(fā)送你想要的控制指令
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1