单片机与PC机串口通信的设计(7)

2019-08-31 00:13

附录C 电路图

第31页,共37页

附录D 源程序

RS BIT P3.5 RW BIT P3.6 E BIT P3.7 ORG 00H ;主程序其始地址 JMP START ;跳至主程序

ORG 0BH ;TIMER0中断其始地址

JMP TIM0

;跳至TIMER0中断子程序

START: MOV P1,#01H ;清除屏幕

CALL ENABLE MOV P1,#38H ;功能设定(8位,2行,5×7点矩阵) CALL ENABLE MOV P1,#08H ;显示器ON,光标ON,闪烁ON

CALL ENABLE MOV P1,#06H ;光标右移

CALL ENABLE MOV P1,#80H CALL ENABLE MOV SCON,#50H ;UART工作在MODE1,SM1=1,REN=1

MOV TMOD,#21H

;设定TIMER0工作在MODE1,TIMER1工作在MODE2

MOV IE,#10000010B ;中断使能 MOV TH1,#0F3H ;波特率2400 MOV TL1,#0F3H

SETB TR0 ;启动TIMER0

SETB

TR1

;启动TIMER1

D1: JB RI,UART ;检测SCON的RI是否为1,是则表示接收到

CALL KEY ;调用KEY,判断是否有按下? CLR EA ;中断屏蔽 JB F0,D1 ;没按则F0=1,没按则F0=0

MOV A,22H

;有按则将取码指针暂存地址的值载入A

RL A

;乘2

MOV

DPTR,#TABLE ;至TABLE取码,取T的值

第32页,共37页

MOVC A,@A+DPTR; MOV MOV MOV RL INC MOVC MOV

MOV

D2: JB CALL SETB JB

JMP

UART:

MOV MOV CALL CALL CALL CLR

RET

KEY:

SETB MOV

MOV

D3: MOV MOV MOV MOV CLR CPL

MOV

TH0,A ;取到的高位字节存入TH0 21H,A ;取到的高位字节存入(21H) A,22H

;再载入取码指针

A ;乘2 A

;加1

A,@A+DPTR ;至TABLE取相对的低位字节计数值 TL0,A ;取到的高位字节存入TL0 20H,A

;取到的高位字节存入(20H)

RI,UART ;检测SCON的RI是否为1,是则表示接收到

KEY ;调用KEY,判断是否有键按下 EA; ;中断使能 F0,D1

;有按否?

D2;

;有则跳至D2

A,SBUF ;将SBUF的值载入ACC

P1,#0CH ;显示器ON,光标OFF,闪烁OFF

ENABLE; WRITE2 ;调用显示子程序

CHECK

;判断光标是否在屏幕最后位置 RI

;清除RI=0

F0 ;设F0=1

R3,#0F7H ;扫描初值(P2.3=0) R1,#00H

;取码指针初值

A,R3 ;载入扫描指针

P2,A ;输出至P2,开始扫描行 A,P2

;读入P2

R4,A C C

;令C=1

R5,#04H

;检测列

第33页,共37页

D4: RLC JNC INC DJNZ MOV CLR CPL RRC MOV JC

RET

KEYIN: MOV CLR

MOV

D5: MOV DJNZ

DJNZ

D6: MOV XRL JZ MOV CALL MOV MOV MOVC MOV MOV CALL CALL

RET

TIM0:

A

;左移一位(P2.7~P2.4) KEYIN

;检测行C=0,表示被按

R1 ;没按则取码指针加1 R5,D4

;4列检测完毕了?

A,R3 C C ;C=1

A

;扫描下一行,即下一行为0 R3,A

;存回R3扫描指针寄存器

D3

;C=0表示扫描完毕

22H,R1 ;取码指针存入22H地址

F0

;令F0=0

R7,#10

;消除抖动

R6,#248 R6,$ R7,D5

A,P2 ;按钮放开否?

A,R4 D6

P1,#0FH ;显示器ON,光标ON,闪烁ON

ENABLE A,R1

;至TABLE1取码

DPTR,#TABLE1 A,@A+DPTR SBUF,A ;载入SBUF发送出去 P1,A

;LCD显示

WRITE2 CHECK

;判断光标是否在屏幕最后位置第34页,共37页

PUSH PUSH MOV MOV CPL POP POP

RETI

CHECK:

MOV CLR SETB CLR NOP SETB JB MOV ANL CJNE MOV

CALL

A3: RET CLEAR: MOV CALL MOV CALL

RET

ENABLE:

CLR CLR CLR CALL SETB

RET

ACC ;将A的值暂存于堆栈 PSW

;将PSW的值暂存于堆栈

TL0,20H ;重设计数值

TH0,21H P3.4

;将P3.4反相

PSW ;至堆栈取回PSW的值 ACC

;至堆栈取回A的值

P1,#0FFH ;令P1=FFH

RS ;RS=0,R/W=1,读BUSY FLAG地址计数器

RW E

E

P1.7,CHECK ;BUSY FLAG=0? A,P1

;是则读入内部地址(光标) A,#7FH ;内部地址DB7无效

A,#48,A3 ;内部地址第2行最后一个字地址为4F P1,#80H ;是则令光标回到80H位置

ENABLE

P1,#01H ;清屏

ENABLE P1,#80H ;令光标回到第一行第一个字位置 ENABLE

RS ;RS=0,R/W=0写入指令组

RW E DELAY E

第35页,共37页


单片机与PC机串口通信的设计(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:山西XXXX煤化工有限公司污水处理及中水回用设计方桉

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: