我希望把51單片機串口接收的數據,分別提取后兩位,倒數第三第四位,并轉換成整形
單片機程序如下:
- #include "reg52.h"
- #include "stdio.h"
- #include "string.h"
- #define uchar unsigned char
- #define uint unsigned int
- void send_byte(uchar by);
- void send_string(uchar *p);
- void delay(uint n);
- uchar rst[]="AT+RST\r\n";
- uchar mod[]="AT+CWMODE=3\r\n";
- uchar wico[]="AT+CWJAP=\"Nick\",\"qweasdzxc\"\r\n";
- uchar sev[]="AT+CIPSTART=\"TCP\",\"192.168.43.31\",8080\r\n";
- uchar mods[]="AT+CIPMODE=1\r\n";
- uchar sen[]="AT+CIPSEND\r\n";
- uchar in[]="in\r\n";
- uchar copa[]="bye\r\n";
- uint g,y,r;
- sbit ght=P2^0;
- sbit yht=P2^1;
- sbit rht=P2^2;
- void UsartInit()
- {
- SCON=0X50;
- T2CON=0X34;
- PCON=0X80;
- RCAP2H=(65536-39)/256;
- RCAP2L=(65536-39)%256;
- ES=0;
- EA=1;
- ET0=1;
- ET1=1;
- EX0=1;
- IT0=1;
- EX1=1;
- IT1=1;
- }
- void main()
- {
-
- UsartInit();
- send_string(rst);
- delay(1);
- send_string(mod);
- delay(1);
- send_string(wico);
- delay(10);
- send_string(sev);
- delay(10);
- send_string(mods);
- delay(5);
- send_string(sen);
- delay(3);
- ES=1;
- g=5;
- y=2;
- r=5;
- while(1)
- {
- ght=0;
- yht=1;
- rht=1;
- delay(g);
- ght=1;
- yht=0;
- rht=1;
- delay(y);
- ght=1;
- yht=1;
- rht=0;
- delay(r);
- }
- }
- void send_byte(uchar by)
- {
- SBUF = by;
- while(!TI);
- TI = 0;
- }
- void send_string(uchar *p)
- {
- while(*p!= '\0')
- {
- send_byte(*p);
- p++;
- }
- }
- void delay(uint n)
- {
- unsigned int i=0;
- for(i=0;i<n;i++)
- {
- #pragma asm
- DEL3:MOV R0,#100
- DEL2:MOV R1,#100
- DEL1:MOV R2,#25
- DEL0:NOP
- NOP
- DJNZ R2,DEL0
- DJNZ R1,DEL1
- DJNZ R0,DEL2
- #pragma endasm
- }
- }
- void Usart() interrupt 4
- {
-
- uchar str1;
- #include "reg52.h"
- #include "stdio.h"
- #include "string.h"
- #define uchar unsigned char
- #define uint unsigned int
- void send_byte(uchar by);
- void send_string(uchar *p);
- void delay(uint n);
- uchar rst[]="AT+RST\r\n";
- uchar mod[]="AT+CWMODE=3\r\n";
- uchar wico[]="AT+CWJAP=\"Nick\",\"qweasdzxc\"\r\n";
- uchar sev[]="AT+CIPSTART=\"TCP\",\"192.168.43.31\",8080\r\n";
- uchar mods[]="AT+CIPMODE=1\r\n";
- uchar sen[]="AT+CIPSEND\r\n";
- uchar in[]="in\r\n";
- uchar copa[]="bye\r\n";
- uint g,y,r;
- sbit ght=P2^0;
- sbit yht=P2^1;
- sbit rht=P2^2;
- void UsartInit()
- {
- SCON=0X50;
- T2CON=0X34;
- PCON=0X80;
- RCAP2H=(65536-39)/256;
- RCAP2L=(65536-39)%256;
- ES=0;
- EA=1;
- ET0=1;
- ET1=1;
- EX0=1;
- IT0=1;
- EX1=1;
- IT1=1;
- }
- void main()
- {
-
- UsartInit();
- send_string(rst);
- delay(1);
- send_string(mod);
- delay(1);
- send_string(wico);
- delay(10);
- send_string(sev);
- delay(10);
- send_string(mods);
- delay(5);
- send_string(sen);
- delay(3);
- ES=1;
- g=5;
- y=2;
- r=5;
- while(1)
- {
- ght=0;
- yht=1;
- rht=1;
- delay(g);
- ght=1;
- yht=0;
- rht=1;
- delay(y);
- ght=1;
- yht=1;
- rht=0;
- delay(r);
- }
- }
- void send_byte(uchar by)
- {
- SBUF = by;
- while(!TI);
- TI = 0;
- }
- void send_string(uchar *p)
- {
- while(*p!= '\0')
- {
- send_byte(*p);
- p++;
- }
- }
- void delay(uint n)
- {
- unsigned int i=0;
- for(i=0;i<n;i++)
- {
- #pragma asm
- DEL3:MOV R0,#100
- DEL2:MOV R1,#100
- DEL1:MOV R2,#25
- DEL0:NOP
- NOP
- DJNZ R2,DEL0
- DJNZ R1,DEL1
- DJNZ R0,DEL2
- #pragma endasm
- }
- }
- void Usart() interrupt 4
- {
-
- uchar str;
- str=SBUF;
- RI = 0;//
- }
- void Iny0() interrupt 0
- {
- ES=0;
- send_string(in);
- ES=1;
- }
- void Iny1() interrupt 2
- {
- ES=0;
- send_string(copa);
- ES=1;
- }
- str1=SBUF;
- RI = 0;//
- }
- void Iny0() interrupt 0
- {
- ES=0;
- send_string(in);
- ES=1;
- }
- void Iny1() interrupt 2
- {
- ES=0;
- send_string(copa);
- ES=1;
- }
復制代碼
|