⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 yjck.asm

📁 51单片机模拟串口
💻 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 + -