简单51单片机串口程序 51单片机串口通信程序

51\u5355\u7247\u673a \u7b80\u5355\u7684\u4e32\u53e3\u7a0b\u5e8f \u9898\u76ee\u5982\u4e0b

\u7528\u4e32\u53e3\u52a9\u624b\u5f80\u4e32\u53e3\u53d1\u6570\u636e\uff0c\u8981\u752816\u8fdb\u5236\u53d1\u9001\uff0c\u4e0d\u8981\u7528\u6587\u672c\u65b9\u5f0f

\u7a0b\u5e8f\u4e0d\u6b63\u786e\uff0c\u4f60\u8fd9\u4e2a\u7a0b\u5e8f\u7684\u7ed3\u679c\uff0c\u5e94\u8be5\u662f\u7535\u8111\u4e0a\u53d1\u4e00\u6b21''1"\uff0c\u540e\u6c38\u8fdc SBUF=='1' \uff0c\u6240\u6709\u5728\u91cd\u590d
\u4eae \u4e0e \u706d\uff0c\u56e0\u4e3a\u65f6\u95f4\u5f88\u5feb\uff0c\u4eba\u773c\u775b\u53cd\u5e94\u4e0d\u8fc7\u6765\uff0c\u6240\u4ee5 \u4e00\u76f4\u662f \u4eae \u7684\uff0c
\u7b80\u5355\u7684 \u4f60 \u53ef\u4ee5\u6539\u53d8 \u4e00\u79cd\u65b9\u5f0f \u8bd5\u8bd5\uff0c \u53d1''1" \u4eae\uff0c \u53d1''0" \u706d\uff0c
\u53bb\u6389 if(cont==0)\uff0cif(cont==1) \u7b49\u7b49\u3002

试试下列程序,这时用中断发送的。

#include<reg51.h>
#define uchar unsigned char
uchar txt[] = "hello";
uchar i = 0;
void main(void)
{
PCON = 0X00;
SCON = 0X50;
TMOD = 0X20;
TH1 = 0XFD;
TL1 = 0XFD;
TR1 = 1;
EA = 1;
ES = 1;
TI = 1;
while(1) {
if(i == 6) {
i = 0;
TI = 1;
}
}
}
void uart() interrupt 4
{
if(RI == 1) RI = 0;
if(TI == 1) {SBUF = txt[i++]; TI = 0;}
}

本程序,可以用串口助手接收。收到的是:hellohellohellohellohello....

#include<reg51.h>#define uchar unsigned char
uchar txt[]="hello";
uchar i=0;
void main(void)
{
PCON=0X00;
SCON=0X50;
TMOD=0X20;
TH1=0XFD;
TL1=0XFD;
EA=1;
ES=1;
TR1=1;
SBUF=txt[0];
while(1)
{
}
}
void uart() interrupt 4
{
if(RI==1)
RI=0;

if(i==6)
{
i=0;
return;
}
if(TI==1)
{
TI=0;
SBUF=txt[i++];
}
}
另外,波特率多少,晶振频率多少?

发送的话用查询方式就好了,稍微改一下:
...
while(1) {
if(i==6)
i=0;
while(!TI);
TI = 0;
SBUF = txt[i++];
}
}

波特率没设置好

  • 绠鍗51鍗曠墖鏈轰覆鍙g▼搴
    绛旓細} 鏈绋嬪簭锛屽彲浠ョ敤涓插彛鍔╂墜鎺ユ敹銆傛敹鍒扮殑鏄細hellohellohellohellohello...
  • 51鍗曠墖鏈虹殑涓茶鍙鎸夊伐浣滄柟寮1杩涜涓茶鏁版嵁閫氫俊,鍋囧畾娉㈢壒鐜囦负2400b/s缂...
    绛旓細AJMP MAIN ;涓婄數锛岃浆鍚戜富绋嬪簭 ORG 0023H ;涓茶鍙鐨勪腑鏂叆鍙e湴鍧 AJMP SERVE ;杞悜涓柇鏈嶅姟绋嬪簭 ORG 0040H ;涓荤▼搴 MAIN: MOV SP,#60H ;璁剧疆鍫嗘爤鎸囬拡 MOV SCON ,#50H MOV PCON ,#00H MOV TMOD,#20H MOV TH1,#0F3H MOV TL1,#0F3H SETB TR1 MOV R0 ,#2...
  • 姹51鍗曠墖鏈轰覆鍙鎺ユ敹绋嬪簭
    绛旓細TH1=0xfa;//鏅舵尟11.0592锛屾尝鐗圭巼4800 TL1=0xfa;SCON=0x50;//涓茶鍙宸ヤ綔鍦ㄦ柟寮1锛屽厑璁告帴鏀讹紝娉㈢壒鐜囩敱瀹氭椂鍣ㄦ帶鍒 PCON=0x00;//涓茶鍙e姞鍊嶄綅涓0 ES=1;TR1=1;ES = 1;//寮涓插彛涓柇 EA = 1;//寮鎬讳腑鏂 } void Com_Int(void) interrupt 4 //涓插彛鎺ユ敹涓柇鍑芥暟 { EA = 0;if(RI == ...
  • 51鍗曠墖鏈閫氳繃涓插彛瀹炵幇鏁版嵁鐨勫彂閫佷笌鎺ユ敹绋嬪簭
    绛旓細1锛岄厤缃涓插彛鍙傛暟銆佹尝鐗圭巼绛,寮鍚覆鍙d腑鏂紱void Init_UART(){ } 2锛屼腑鏂嚱鏁伴噷鍐欎腑鏂搷搴斿嚱鏁帮紝鏍规嵁鎺ユ敹鐨勬寚浠ゆ垨鑰呮暟鎹紝鎵ц鐩稿簲鐨勫姩浣滐紱绋嬪簭涓鑸负锛歷oid UART_ISR() interrupt x using y { ;涓插彛涓柇澶勭悊鍑芥暟 } x - 鍗曠墖鏈鐨C51涓柇鍙 y - 鎸囧畾浣跨敤鐨勫綋鍓嶅伐浣滃瘎瀛樺櫒缁勫彿锛0-3 PSW涓...
  • 51鍗曠墖鏈 涓插彛璁捐c璇█绋嬪簭绠鍗璁捐
    绛旓細REN = 1; //寮涓插彛閫氫俊.SM0 = 0; //璁剧疆涓插彛閫氫俊鏂瑰紡1 SM1 = 1;EA = 1; //寮鎬讳腑鏂.ES = 1; //寮涓插彛涓柇.} void delay(uint z){ uint x, y;for(x = z; x > 0; x--) for(y = 110; y > 0; y--);} void main(){ init();a = '4';while(...
  • 姹備竴51绯诲垪鍗曠墖鏈C绋嬪簭,鏈濂芥槸绠鍗鏄撴噦,鏈夋敞閲娿 绋嬪簭鐩殑:閫氳繃涓插彛...
    绛旓細ES = 1;//鎵撳紑涓插彛涓柇 TR1 = 1;//瀹氭椂鍣1寮濮嬭鏁 } void SendOneByte(unsigned char c)//鍙戦佸瓧鑺 { SBUF = c; //璧嬪肩粰SBUF鍚姩鍙戦 while(!TI); //绛夊緟鍙戦佸畬鎴 TI = 0; //娓呴浂鍙戦佸畬鎴愭爣蹇椾綅 } void SendString(unsigned char *p)//鍙戦佸瓧绗︿覆 { while(*p) //濡傛灉p鐨勫唴瀹逛笉...
  • 51鍗曠墖鏈轰覆鍙閫氫俊c璇█缂栫▼
    绛旓細//涓绋嬪簭 int main (void){ int i;sinti(); //涓插彛鍒濆鍖栫▼搴 ring=1;while(1){ while (1){ if(CASE1==0){ send('a');ring=0;break;} if(CASE2==0){ send('b');ring=0;break;} if(CASE3==0){ send('c');ring=0;break;} if(CASE4==0){ send('d');ring=0...
  • C51鍗曠墖鏈涓嶱C涓插彛閫氫俊鐨勫崟鐗囨満閮ㄥ垎绋嬪簭
    绛旓細涓嬮潰杩欎釜绋嬪簭娌℃湁浠涔堝疄闄呬环鍊硷紝鍙敤浜庢紨绀涓插彛绋嬪簭鐨勭紪鍐 娉ㄦ剰娉㈢壒鐜囨槸9600 鍔熻兘锛氱數鑴戦氳繃涓插彛缁鍗曠墖鏈鍙戜竴涓瓧鑺傦紝鍗曠墖鏈烘敹鍒板悗鍙堢粰鐢佃剳鍙戝洖鍘 include<reg52.h> define uchar unsigned char define uint unsigned int uint temp;bit flag;void init_ser1();main(){ init_ser1();while(1){ if(...
  • 涓や釜51鍗曠墖鏈轰覆鍙閫氫俊绋嬪簭?
    绛旓細涓茶鍙戦绋嬪簭 Tx.asm :PCON, #00H ;; 娉㈢壒鐜囦笉鍊嶅 SETB TR1 ;; 鍚姩瀹氭椂鍣═1 MOV IE, #0;; 绂佹浠讳綍涓柇 CALL DLY125 ;; 寤舵椂125ms ;;--- T_X: ;; 閫忎紶鍙戦佸瓧涓 ACALL DSPLED ;; P2.0鎺у埗LED闂寒 MOV R3, #4 ;; 寰呭彂閫佸瓧绗︿釜鏁 MOV ...
  • 涓閬51鍗曠墖鏈鐨凜璇█绋嬪簭,鍏充簬涓插彛閫氳鐨,寰绠鍗...
    绛旓細ES=1; //閲嶆柊浣胯兘涓插彛涓柇 flag=0; //娓呴櫎flag锛屼负浜嗙瓑寰呬笅涓娆℃帴鏀 } } } void serial() interrupt 4 //涓插彛涓柇鏈嶅姟绋嬪簭锛屼紭鍏堢骇涓4 { RI=0; //褰撴帴鏀跺畬鎴愪箣鍚嶳I琚疆涓锛屽彂鐢熶覆鍙d腑鏂紝娓呮爣蹇椾綅 a=SBUF; //璇诲彇鏀跺埌鐨勫瓧绗︼紝骞惰祴缁欏彉閲廰 flag=1; //缃帴鏀跺畬鎴愭爣蹇...
  • 扩展阅读:51单片机串口收发程序 ... 51单片机编程入门教程 ... 51单片机电子时钟程序 ... 51串口接收数据程序 ... 串口通信简单流程图 ... 单片机简单设计作品 ... 51单片机c语言编写程序 ... 51单片机烧录如何接线 ... 51单片机串口计算器代码 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网