|
初學(xué)者筆記之串口仿真例程
proteus里面不要使用max232元件,直連compin即可。真實(shí)環(huán)境再使用max232轉(zhuǎn)換電平。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png (11.04 KB, 下載次數(shù): 77)
下載附件
2017-12-1 02:32 上傳
0.png (10.69 KB, 下載次數(shù): 75)
下載附件
2017-12-1 02:32 上傳
單片機(jī)源程序如下:
- #include <reg52.h>
- #include <stdio.h>
- #define uchar unsigned char
- #define uint unsigned int
-
- uchar flag;
- uchar a;
- uchar table[] = "Iget";
- void delay(int ms);
- void sendchar(uchar ch);
- void sendstring(char*);
- void init()
- {
- TMOD = 0x20;//TMOD工作方式2 自動(dòng)重載8位初值
- PCON =0x80;
- TH1 = 0xFA;
- TL1 = 0xFA;
-
- // SM0=0;
- // SM1=1;//
- // REN = 1;//
- //把這三句換成下面一條語(yǔ)句,就完美解決
- SCON = 0x50;//串口工作方式1,允許串口接收
- EA = 1;//中斷允許
- ES = 1;//串口中斷模式
-
- TR1=1;
- }
- void main()
- {
- init();
- delay(100);
- while(1)
- {
- if(flag==1)
- {
- flag=0;
- sendstring(table);
- sendchar(a);
- }
- }
- }
- void sendstring(char* chs)
- {
- ES=0;
- TI= 1;
- printf("%s", chs);
- while(!TI);
- TI=0;
- ES = 1;
- }
- void sendchar(uchar ch)
- {
- ES=0;
- SBUF = ch;
- while(!TI);
- TI=0;
- ES = 1;
- }
- void delay(int ms)
- {
- int i,j;
- for(i=0;i<ms;i++)
- for(j=0;j<110;j++);
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
串口通訊.zip
(22.58 KB, 下載次數(shù): 58)
2017-11-30 14:02 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
|