mov p1,#0ffh mov p3,#0ffh ;mov p3,#00h mov p1,#00h
MOV SCON,#50H;设置成串口1方式
MOV TMOD,#20H;波特率发生器T1工作在模式2上 MOV PCON,#80H;波特率翻倍为2400x2=4800BPS MOV TH1,#0faH;预置初值(按照波特率2400BPS预置初值) MOV TL1,#0FaH;预置初值(按照波特率2400BPS预置初?1 setb tr1
LOOP:JnB P3.2,WRIT; LCALL DELAY10 SETB P1.0 LCALL DELAY10 SETB P1.3 LCALL DELAY10 CLR P1.3 LCALL DELAY10 LCALL DELAY10 CLR P1.0
WRIT:JnB P3.3,LOOP;判断K1是否按下,如果没有按下就 lCALL DELAY10;延时10毫秒消触点抖动
JB P3.2,WRIT;去除干扰信号 JB P3.2,$;等待按键松? SETB p1.0 SETB P1.3;? mov a,p1 swap a anl a,#0fh add a,#03h mov @r1,a
movc a,@a+pc;将16进制的字符AF发送到串口去 MOV SBUF,A;将AF通过单片机的串行口发送数据出去 sjmp writ
asctab:db '1','2','3','4','5','6','7','8','9' db '0','*','#','a','b','c','d'
;10毫秒延时子程序 DELAY10:MOV R4,#20 D2:MOV R5,#248 DJNZ R5,$ DJNZ R4,D2 RET end
单片机串行口通信汇编程序
ORG 0000H
;http://www.mcuway.com 汇编语言串口通信程序 mov p1,#0ffh mov p3,#0ffh ;mov p3,#00h mov p1,#00h
MOV SCON,#50H;设置成串口1方式
MOV TMOD,#20H;波特率发生器T1工作在模式2上 MOV PCON,#80H;波特率翻倍为2400x2=4800BPS MOV TH1,#0faH;预置初值(按照波特率2400BPS预置初值) MOV TL1,#0FaH;预置初值(按照波特率2400BPS预置初?1 setb tr1
LOOP:JnB P3.2,WRIT; LCALL DELAY10 SETB P1.0 LCALL DELAY10 SETB P1.3 LCALL DELAY10 CLR P1.3 LCALL DELAY10 LCALL DELAY10 CLR P1.0
WRIT:JnB P3.3,LOOP;判断K1是否按下,如果没有按下就 lCALL DELAY10;延时10毫秒消触点抖动 JB P3.2,WRIT;去除干扰信号 JB P3.2,$;等待按键松? SETB p1.0 SETB P1.3;? mov a,p1 swap a anl a,#0fh add a,#03h mov @r1,a
movc a,@a+pc;将16进制的字符AF发送到串口去 MOV SBUF,A;将AF通过单片机的串行口发送数据出去 sjmp writ
asctab:db '1','2','3','4','5','6','7','8','9' db '0','*','#','a','b','c','d'
;10毫秒延时子程序 DELAY10:MOV R4,#20
D2:MOV R5,#248 DJNZ R5,$ DJNZ R4,D2 RET end
单片机串行口通信程序汇编语言编写
来源:互联网 作者:电路图 【大 中 小】
ORG 0000H ;
mov p1,#0ffh mov p3,#0ffh ;mov p3,#00h mov p1,#00h
MOV SCON,#50H;设置成串口1方式
MOV TMOD,#20H;波特率发生器T1工作在模式2上 MOV PCON,#80H;波特率翻倍为2400x2=4800BPS MOV TH1,#0faH;预置初值(按照波特率2400BPS预置初值) MOV TL1,#0FaH;预置初值(按照波特率2400BPS预置初?1
setb tr1
LOOP:JnB P3.2,WRIT; LCALL DELAY10 SETB P1.0 LCALL DELAY10 SETB P1.3 LCALL DELAY10 CLR P1.3 LCALL DELAY10 LCALL DELAY10
CLR P1.0
WRIT:JnB P3.3,LOOP;判断K1是否按下,如果没有按下就
lCALL DELAY10;延时10毫秒消触点抖动 JB P3.2,WRIT;去除干扰信号 JB P3.2,$;等待按键松? SETB p1.0 SETB P1.3;? mov a,p1 swap a anl a,#0fh add a,#03h
mov @r1,a
movc a,@a+pc;将16进制的字符AF发送到串口去 MOV SBUF,A;将AF通过单片机的串行口发送数据出去 sjmp writ
asctab:db '1','2','3','4','5','6','7','8','9' db '0','*','#','a','b','c','d'
;10毫秒延时子程序 DELAY10:MOV R4,#20 D2:MOV R5,#248 DJNZ R5,$ DJNZ R4,D2 RET end
1.串行口方式0应用编程 8051单片机串行口方式0为移位寄存器方式,外接一个串入并出的移位寄存器,就能扩展一个并行口。
<单片机串行口通信程序设计硬件连接图>
例:用8051串行口外接CD4094扩展8位并行输出口,如图所示,8位并行口的各位都接一个发光二极管,要求发光管呈流水灯状态。 串行口方式0的数据传送可采用中断方式,也可采用查询方式,无论哪种方式,都要借助于TI或RI标志。串行发送时,能靠TI置位(发完一帧数据后)引起中断申请,在中断服务程序中发送下一帧数据,或者通过查询TI的状态,只要TI为0就继续查询,TI为1就结束查询,发送下一帧数据。在串行接收时,则
由RI引起中断或对RI查询来确定何时接收下一帧数据。无论采用什么方式,在开始通信之前,都要先对控制寄存器SCON进行初始化。在方式0中将,将00H送SCON就能了。 -----------------单片机串行口通信程序设计列子-------------------------- ORG 2000H
START: MOV SCON,#00H ;置串行口工作方式0 MOV A,#80H ;最高位灯先亮
CLR P1.0 ;关闭并行输出(避象传输过程中,各OUT0: MOV SBUF,A ;开始串行输出 OUT1: JNB TI,OUT1 ;输出完否
CLR TI ;完了,清TI标志,以备下次发送 SETB P1.0 ;打开并行口输出 ACALL DELAY ;延时一段时间 RR A ;循环右移
CLR P1.0 ;关闭并行输出 JMP OUT0 ;循环
说明:DELAY延时子程序能用前面我们讲P1口流水灯时用的延时子程序,二、串行口异步通信 org 0000H AJMP START ORG 30H START: mov SP,#5fh ;
mov TMOD,#20h ;T1: 工作模式2 mov PCON,#80h ;SMOD=1
mov TH1,#0FDH ;初始化波特率(参见表) mov SCON,#50h ;Standard UART settings MOV R0,#0AAH ;准备送出的数
LED的\"暗红\"现象) 这里就不给出了。 SETB REN ;允许接收 SETB TR1 ;T1开始工作 WAIT: MOV A,R0 CPL A MOV R0,A MOV SBUF,A LCALL DELAY
JBC TI,WAIT1 ;如果TI等于AJMP WAIT
WAIT1: JBC RI,READ ;如果AJMP WAIT1 READ:
MOV A,SBUF ;将取得的数送MOV P1,A LJMP WAIT DELAY: ;延时子程序 MOV R7,#0ffH DJNZ R7,$ RET END
将程序编译通过,写入芯片,能实验了。上面的程序功能很简单,就是每隔一段时间向主机轮流送数主机送去的数送到P1口。能在载。运行串行口精灵后,按主界面上的数进行设置。注意,我的机器上用的是串行口的设置。
设置完后,按确定返回主界面,注意右边有一个下拉列表,应当选中,则清TIRI等于1,则清P1口 插入实验板,PC端用串行口精灵来做实验。串行口精灵在我主页上有下“WAIT1 RI并转READ 用通读电缆将实验板与主机的串行口相连就”按钮进入“2,如果你不是串行口55H和AAH”对话框,按下面的参2,请自行更改串行口“按16进制”1并转,并把设置参数设置参数。然后
按“开始发送”、“开始接收”就能了。按此设置,实验板上应当有两只灯亮,6只灯灭。大家能自行更改设置参数中的发送字符如55,00,FF等等,观察灯的亮灭,并分析原因,也能在主界面上更改下拉列表中的“按16进制”为“按10进制”或“按ASCII字符”来观察现象,并仔细分析。这对于大家理解16进制、10进制、ASCII字符也是很有好处的。程序本身很简单,又有注释,这里就不详加说明了。 三、上述程序的中断版本 org 0000H AJMP START org 0023h AJMP SERIAL ; ORG 30H START: mov SP,#5fh ;
mov TMOD,#20h ;T1: 工作模式2 mov PCON,#80h ;SMOD=1
mov TH1,#0FDH ;初始化波特率(参见表) mov SCON,#50h ;Standard UART settings MOV R0,#0AAH ;准备送出的数 SETB REN ;允许接收 SETB TR1 ;T1开始工作 SETB EA ;开总中断 SETB ES ;开串行口中断 SJMP $ SERIAL: MOV A,SBUF MOV P1,A CLR RI RETI
END
因篇幅问题不能全部显示,请点此查看更多更全内容