久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
求助一段單片機代碼 中斷套中斷的
[打印本頁]
作者:
學到老1112
時間:
2017-6-28 22:24
標題:
求助一段單片機代碼 中斷套中斷的
代碼目的:單片機通過定時器0產生中斷 ,定時發送串口數據并接受返回值 通過判斷返回值來判斷SIM900a模塊工作狀態,通過檢測LED5亮 否則LED5熄 ,但是總是不知道哪里的問題 達不到效果,請大神們指教 單片機愛好者 初學 謝謝!代碼如下:
#include <reg52.h>
#include <stdio.h>
#include <string.h>
#define Buf_Max 90
unsigned char i = 0;
unsigned char T0RL =0;
unsigned char T0RH =0;
xdata unsigned char Rec_Buf[Buf_Max];
void init(void);
void GSM_Call(unsigned char *num)
void Delay_ms(unsigned int time);
void CLR_Buf(void);//Çå3y»o′æ
void Send_ASCII(unsigned char *b);
void Send_Hex(unsigned char c);
void work_test(void);
void ConfigTimer0(unsigned int ms);
void ConfigUART(unsigned int baud);
char code num[]="xxxxxxxxxx";
sbit key1=P1^1;
sbit LED5=P1^5;
void main(void)
{
EA = 1;
ConfigUART(9600);
ConfigTimer0(20);
CLR_Buf();
Delay_ms(3000);
while(1)
{
if(key1==0)
{
Delay_ms(20)
if(key1==0)
{
GSM_Call(num);
Delay_ms(1000);
}
}
}
}
void GSM_Call(unsigned char *num)
{
Send_ASCII("ATD");
Send_ASCII(num);
Send_ASCII(";");
Send_Hex(0x0d);
Send_Hex(0x0a);
Delay_ms(200)
}
//oáÃëÑóê±oˉêy
void Delay_ms(unsigned int time)
{
unsigned int i;
for(;time>0;time--)
{
i=125;
while(i--);
}
}
void CLR_Buf(void)
{
unsigned char k;
for(k=0;k<Buf_Max;k++)
{
Rec_Buf[k] = 0;
}
i = 0;
}
void Send_Hex(unsigned char c)
{
ES = 0;
SBUF = c;
while(TI!=1);
TI = 0;
ES = 1;
}
void Send_ASCII(unsigned char *b)
{
ES = 0;
for (b; *b!='\0';b++)
{
SBUF = *b;
while(TI!=1);
TI = 0;
}
ES = 1;
}
void work_test(void)
{
Send_ASCII("AT")
Send_Hex(0x0d);
Send_Hex(0x0a);
Delay_ms(2000);
if(strstr(Rec_Buf,"OK")!=NULL)
{
CLR_Buf();
//LED2=0;
Send_ASCII("AT+CPIN?")
Send_Hex(0x0d);
Send_Hex(0x0a);
Delay_ms(2000);
if(strstr(Rec_Buf,"+CPIN")!=NULL&&strstr(Rec_Buf,"OK")!=NULL)
{
CLR_Buf();
// LED3=0;
Send_ASCII("AT+CSQ")
Send_Hex(0x0d);
Send_Hex(0x0a);
Delay_ms(2000);
if(strstr(Rec_Buf,"OK")!=NULL)
{
CLR_Buf();
// LED4=0;
Send_ASCII("AT+CREG?")
Send_Hex(0x0d);
Send_Hex(0x0a);
Delay_ms(2000);
if(strstr(Rec_Buf,"0")!=NULL&&strstr(Rec_Buf,"1")!=NULL&&strstr(Rec_Buf,"OK")!=NULL)
{
CLR_Buf();
Delay_ms(1000);
LED5 = 0;
}
}
}
}else LED5 = 1;
}
void ConfigUART(unsigned int baud)
{
SCON = 0x50;
TMOD &= 0x0F
TMOD |= 0x20
TH1 = 256 - (11059200/12/32)/baud
TL1 = TH1;
ET1 = 0;
ES = 1;
TR1 = 1;
}
void ConfigTimer0(unsigned int ms)
{
unsigned long tmp
tmp = 11059200 / 12;
tmp = (tmp * ms) / 1000
tmp = 65536 - tmp;
tmp = tmp + 18;
T0RH = (unsigned char)(tmp>>8);
T0RL = (unsigned char)tmp;
TMOD &= 0xF0;
TMOD |= 0x01;
TH0 = T0RH;
TL0 = T0RL;
ET0 = 1;
TR0 = 1;
}
void InterruptTimer0() interrupt 1
{
static unsigned int cnt = 0;
TH0 = T0RH;
TL0 = T0RL;
cnt++;
if(cnt ==50)
{
work_test();
}
if(cnt ==800)
cnt =0;
}
void tinit() interrupt 4
{
ES = 0;
if(TI)
{
TI = 0
}
if(RI)
{
RI = 0
Rec_Buf[i] = SBUF
i++;
if(i>90)
{
i = 0;
}
}
ES = 1;
}
復制代碼
作者:
學到老1112
時間:
2017-6-28 23:16
求大神指點 在線等
作者:
學到老1112
時間:
2017-6-29 09:56
這么大的論壇有人懂的嗎
作者:
nicoledtt
時間:
2017-6-29 11:13
你就不能加點備注么?好難審閱啊
作者:
yzwzfyz
時間:
2017-7-1 01:27
1、達不到效果,已達到了什么程序呢?
2、串行數據丟失風險大,其中斷優先級可以考慮設置為最高。
3、中斷服務程序要盡可能“小”少用時間,以防妨礙其它低級別的中斷。所以,中斷事件盡可不要在中斷服務程序中處理,而是做個“記號”,讓事件在主程序中進行依“記號”處理。
作者:
cjjcjj1
時間:
2017-7-1 08:57
提示:
作者被禁止或刪除 內容自動屏蔽
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
日本精品一区二区在线观看
|
亚洲综合无码一区二区
|
成人福利网站
|
欧美中文字幕
|
精品亚洲国产成av人片传媒
|
亚洲精品久久久一区二区三区
|
一级黄色片一级黄色片
|
在线成人免费av
|
日韩在线
|
久久综合激情
|
国产在线一区观看
|
久久久亚洲精品视频
|
亚洲成人综合社区
|
一区二区三区视频免费观看
|
欧美黑人体内she精在线观看
|
成人做爰9片免费看网站
|
不卡一区
|
国产午夜精品久久久久免费视高清
|
成年免费大片黄在线观看一级
|
亚洲精品www久久久久久广东
|
日韩精品一区二区三区中文在线
|
免费看的av
|
懂色tv
|
日本成人区
|
中文字幕福利视频
|
人人人艹
|
欧美精品在线一区二区三区
|
亚洲精品久久久久久久久久久久久
|
欧美成人hd
|
在线观看国产三级
|
国产精品久久久久久影视
|
亚洲一区二区三区免费
|
色综合一区二区
|
亚洲视频不卡
|
一a一片一级一片啪啪
|
亚洲iv一区二区三区
|
re久久
|
国产精品资源在线
|
久久久久久久国产精品影院
|
久久久精品久久久
|
伊人久久综合
|