|
用while循環(huán)發(fā)送數(shù)組中字符串是以下標(biāo)超出為0來判斷結(jié)束。如果發(fā)送不含0的數(shù)字串也是可以的,因?yàn)橛?就會跳出。要在末尾加0,否則會出錯。
程序改這樣試試。
- #include<reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar arry1[] = "1-HELLO!\r\n"; //文本模式接收
- uchar arry2[] = {1,2,0}; //HEX 模式接收
- uchar arry3[] = {1,2,3,4,0};
- uchar arry4[] = {1,2,3,4,5,6,7,8,0};
- uchar *ptrTxd;
- uchar cmdTxd = 0;
- void ConfigUART()
- {
- SCON = 0x50;
- TMOD = 0x20;
- TH1 = 0xfd;
- TL1 = 0xfd;
- TR1 = 1;
- ET1 = 0;
- EA = 1;
- ES =1;
- }
- void Send_byte(uchar dat)
- {
- SBUF = dat;
- while(!TI);
- TI = 0;
- }
- void Send_string(uchar *p)
- {
- while(*p)
- {
- Send_byte(*p++);
- }
- }
- void main(void)
- {
- ConfigUART();
- while(1);
- }
- void interrupttimer() interrupt 4
- {
- RI = 0;
- cmdTxd=SBUF;
- switch(cmdTxd)
- {
- case 1:ptrTxd=arry1;Send_string(ptrTxd);break;
- case 2:ptrTxd=arry2;Send_string(ptrTxd);break;
- case 3:ptrTxd=arry3;Send_string(ptrTxd);break;
- case 4:ptrTxd=arry4;Send_string(ptrTxd);break;
- default: break;
- }
- }
復(fù)制代碼 |
|