AUXR EQU 8EH
;---------------------------------------------------------------
;定义管脚
;---------------------------------------------------------------
defin:
HC595_SCK BIT P0.4;sbit HC595_SCK = P0^4;
HC595_RCK BIT P0^5;sbit HC595_RCK = P0^5;
HC595_RST BIT P0^6;sbit HC595_RST = P0^6;
HC595_DAT BIT P0^7;sbit HC595_DAT = P0^7;
ORG 0000H
AJMP INIT
ORG 000BH ;定时器0的中断向量地址
AJMP TIME0 ;跳转到真正的定时器程序处
ORG 0030H
;---------------------------------------------------------------
;初始化
;---------------------------------------------------------------
INIT:;MOV P0 ,#0FH;初始化低四位为高电平,使能四位数码管
CLR HC595_RST;HC595的复位端,不能让他复位
ANL PCON,#7FH //波特率不倍速 SMOD=0
MOV SCON,#50H //方式1,8位数据,可变波特率,接收允许
ORL AUXR,#40H
ANL AUXR,#0FEH //定时器1时钟为Fosc,即1T
ANL TMOD,#0FH //定时器1:模式2,8位自动重装模式,用于产生波特率 9600
ORL TMOD,#20H
MOV TL1,#0B2H
MOV TH1,#0B2H
CLR ET1
SETB TR1
CLR ES //关串行中断
CLR PS
; SETB EA
MOV 32H,#2H
MOV 33H,#9H
MOV 34H,#4H
MOV 35H,#0H
MOV R1,#32H
MOV A,@R1
MOV 31H,#00H ;软件计数器预清0
MOV TMOD,#00000001B ;定时/计数器0工作于方式1
MOV TH0,#3CH
MOV TL0,#0B0H ;即数15536
SETB EA ;开总中断允许
SETB ET0 ;开定时/计数器0允许
SETB TR0 ;定时/计数器0开始运行
SETB PT0
;---------------------------------------------------------------
;主函数
;---------------------------------------------------------------
MAIN: ;MOV R2,#250 ;循环250次
SHOW1:
LCALL SENDASC
LCALL RECEIVE
LCALL SHOW1234
;DJNZ R2,SHOW1
JMP MAIN
我想用串口自发自收,每秒更新一次的数据送入串口发送并接收显示,本来没有串口直接显示时,四位数码管显示正常四位常亮,但是,只是加了串口后,数码管前面三位开始跳动闪烁,只有第四位是常亮的,为什么呢
我试了试,也不是数码管显示函数中的延迟的问题,改长改短都会闪烁
但是我不用串口直接把数据送到数码管时是正常显示的啊
追答那是当然,不用串口的时候显示是没有干扰的,但有串行通讯时,要占用时间的,影响到了显示。
本回答被提问者采纳