📄 yjck.asm
字号:
;本程序为51系列单片机汇编语言源程序,可以在所有51系列(或兼容)单片机中运行。
;完成功能:使用P3.1硬件串行接口,实现对KY系列智能液晶终端进行控制.
;程序中给出了设计方法,通过修改TIMEth使本程序适用于各种晶振及各种波特率.
;本例为:当通讯波特率=9600Hz,单片机晶振=18.432MHz时,TIMEzq=246
; 使用P3.1硬件串口,使用P1.2检测"忙"信号.
;本程序在Wave For windows ver 2.80仿真软件编译成功。
;在AT89C51(9600Hz,18.432MHz)中运行通过.运行结果是:每隔1秒,显示3个字母.
;=====================================================================================
ZD_DATA EQU P3.1 ;向液晶终端输出串行数据,使用硬件串口输出数据,故必须连接于P3.1
ZD_BUSY EQU P1.2 ;接收液晶终端发来的"忙"(BUSY)信号,可以连接于任意一位输入引脚上.
;=====================================================================================
TIMEth EQU 246 ;通过修改TIMEth使本程序适用于各种晶振及各种波特率.计算方法见后.
;=====================================================================================
ORG 0
MOV TH1,#TIMEth ;
MOV PCON,#80H ;SMOD=1
MOV TMOD,#20H ;定时器1为方式2:可自动再装入的8位计数器
MOV TCON,#40H ;定时器1开始运行(TR1=1)
MOV SCON,#0D0H ;串口通道工作方式3,发送11位
MAIN: MOV A,#'A' ;显示字母A
LCALL FSA
MOV A,#55H ;显示字母U
LCALL FSA
MOV A,#0AAH;显示字母γ
LCALL FSA
MOV A,#' ' ;空格
LCALL FSA
MOV A,#1BH ;延时1秒
LCALL FSA
MOV A,#'l'
LCALL FSA
MOV A,#10
LCALL FSA
LJMP MAIN
;=============================================================================
FSA: JB ZD_BUSY,FSA ;如果终端"忙",则等待(输出A中的数据)
MOV SBUF,A ;发送一字节
FS2: JNB TI,FS2 ;等待本字节发送完毕
CLR TI
RET
;=====================================================================================
;============================================================================
;例1:当通讯波特率F=9.6KHz,单片机晶振Z=18.432MHz时,TIMEth=246
;/ TIMEth=256-[(Z*1000)/192/F]=256-[(18.432*1000)/192/9.6]=246
;/-------------
;/例2:当通讯波特率F=4.8KHz,单片机晶振Z=18.432MHz时:
;/ TIMEth=256-[(Z*1000)/192]/F=256-[(18.432*1000)/192/4.8]=236
;/-------------
;/例3:当通讯波特率F=19.2KHz,单片机晶振Z=18.432MHz时:
;/ TIMEth=256-[(Z*1000)/192]/F=256-[(18.432*1000)/192/19.2]=251
;/-------------
;/例4:当通讯波特率F=96KHz,单片机晶振Z=18.432MHz时:
;/ TIMEth=256-[(Z*1000)/192]/F=256-[(18.432*1000)/192/96]=255
;/-------------
;/例5:当通讯波特率F=9.6KHz,单片机晶振Z=11.0592MHz时:
;/ TIMEth=256-[(Z*1000)/192]/F=256-[(11.0592*1000)/192/9.6]=250
;/-------------
;/例6:当通讯波特率F=38.4KHz,单片机晶振Z=22.1184MHz时:
;/ TIMEth=256-[(Z*1000)/192]/F=256-[(22.1184*1000)/192/38.4]=253
;/------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -