新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)串口通信試驗(yàn)匯編程序

51單片機(jī)串口通信試驗(yàn)匯編程序

作者: 時(shí)間:2016-12-01 來(lái)源:網(wǎng)絡(luò) 收藏
(今天是硬生生的把它給摳出來(lái)了):PC 通過(guò)串口助手向單片機(jī)系統(tǒng)傳遞命令和數(shù)據(jù):以A5開(kāi)始,以5A結(jié)束;中間是數(shù)據(jù),長(zhǎng)度不一,要求把數(shù)據(jù)部分用led燈顯示出來(lái);并且要求循環(huán)顯示;

//This is my x_Edprogramcode
//we use it as the pc communicated with themcu
//At the same time,we want to see the result by LCD;
STFLAG BIT 00H //收到起始碼標(biāo)志,1為收到起始碼
EDFLAG BIT 01H //到結(jié)束碼標(biāo)志,1為收到結(jié)束碼
TMFLAG BIT 02H //定時(shí)時(shí)間到標(biāo)志,1為定時(shí)時(shí)間到
ORG 0000H
SJMP Initialize//主程序入口 (初始化程序)
ORG 000BH //定時(shí)器0入口
LJMP TIMER0 //定時(shí)器0中斷
ORG 0023H //串口中斷程序的入口地址
LJMP Transfer //跳轉(zhuǎn)到接受中斷入口
///////////////////////////////////////////////////////////////
ORG 0050H
Initialize:
MOV SP,#70H //設(shè)置堆棧
MOV TMOD,#21H //T1工作方式2 T0工作
MOV TH1,#0FDH //波特率9600
MOV TL1,#0FDH //波特率9600 自動(dòng)重裝載
MOV TH0,#3CH //定時(shí)50ms
MOV TL0,#0BH //定時(shí)50ms
MOV SCON,#50H //串口工作方式1
MOV R6,#00H //定時(shí)次數(shù)計(jì)數(shù)器20一秒
MOV R5,#00H //接收數(shù)據(jù)長(zhǎng)度計(jì)數(shù)器
MOV R4,#00H //控制輸出控制寄存器
MOV R0,#30H //數(shù)據(jù)存儲(chǔ)地址
MOV R1,#30H //控制輸出的數(shù)據(jù)緩存
CLR STFLAG //清起始標(biāo)志位
CLR EDFLAG //清結(jié)束標(biāo)志位
CLR TMFLAG //清時(shí)鐘標(biāo)志位
SETB PS //提高串口中斷的優(yōu)先級(jí)
SETB TR1 //打開(kāi)定時(shí)器1;
SETB ES //打開(kāi)串口中斷允許位
SETB ET0 //定時(shí)器0中斷允許位
SETB EA //打開(kāi)全局中斷允許位
/////////////////等待接受命令////////////////////////
Main: JB STFLAG,NODE3 //已經(jīng)收到起始位
SJMP Main //未起始繼續(xù)等待
NODE3: JB EDFLAG,NODE4 //已經(jīng)收到結(jié)束位
SJMP Main //未結(jié)束繼續(xù)等待
NODE4: SETB TR0 //打開(kāi)定時(shí)器0;
NODE5: JB TMFLAG,OUTPUT
SJMP NODE5
///////////////////等待上位機(jī)傳送數(shù)據(jù)并記錄////////
Transfer: CLR ES
MOV A,SBUF
CJNE A,#0A5H,NODE0 //檢測(cè)到起始位
SETB STFLAG
SJMP JIEDIAN
NODE0: CJNE A,#05AH,NODE1 //檢測(cè)到結(jié)束位
SETB EDFLAG
MOV DPH,R5
MOV R4,DPH
clr ES //打開(kāi)串口中斷允許位
SJMP ret00
NODE1: MOV @R0,A //既非起始碼,又非結(jié)束碼,則為數(shù)據(jù)
INC R0
INC R5
MOV SBUF,#055H
JIEDIAN: CLR TI
CLR RI
SETB ES
ret00: RETI
TIMER0: CLR TR0
MOV TH0,#3CH
MOV TL0,#0B0H
INC R6
CJNE R6,#20,RTN
SETB TMFLAG
MOV R6,#00H
RTN: SETB TR0
RETI

本文引用地址:http://m.butianyuan.cn/article/201612/324121.htm

OUTPUT: CLR TR0
clr TMFLAG
MOV A,@R1
MOV P1,A
INC R1
DJNZ R4,NODE4
MOV R1,#30H
CLR TMFLAG
MOV DPH,R5
MOV R4,DPH
SJMP NODE4
RETI
END



評(píng)論


技術(shù)專區(qū)

關(guān)閉