📄 lcd89527.lst
字号:
页 1
07-20-02
19:29:54
伟福汇编器 V5.00 Copyright (c) 1989, 99 by CHY
地址 机器码 源程序
;LCD89527:89C52:键盘控制、LCD控制显示、接收从764传过来的信号,并且按照顺序显示
;本程序和89521比较的特点:有2秒的稳定显示时间,不会觉得太快
; 在8952的基础上,通过串口把数据发送给另外一个764,信息包括取出的查表出的CALL机地址的后4位,以及信息数据
; 信息的格式:4 BYTE的CALL机地址,一位信息,总共5 BYTE
;功能:1、显示最新的几个信息每一个保留18秒,然后消失,后面的顺序向前移动,2秒刷新一次.
; 2、按键可以控制单呼和组呼
; 3、
; p0控制LCD 的PIN
;P1.0--P1.7:按键盘输入
;现在的问题是:最多显示6个,最大接收暂存区是9个,如果更多的数据进来,就会出问题.
;本程序在LDTLCD1的基础上改动接收按键部分
;遗留问题:设置初始化中,有时按键按不进去;清 除按键的处理
;本程序和3的区别是加上了清除按键,按键的处理改变。
DI BIT P2.0
RW BIT P2.1
RST BIT P2.2
LCD BIT P2.3 ;控制背光
;SEND_PTT BIT P2.3
E BIT P2.4
;POC_TMD BIT P2.5
CS1 BIT P2.6
CS2 BIT P2.7
XRESET BIT P0.1 ;输出,=0时,使93C10复位
TXDATA BIT P0.2 ;输入.
TXCLK BIT P0.3 ;输入.地址数据和选项的时钟
ON BIT P0.4 ;输出.接收模式使能
LED BIT P3.2 ;输出.接收成功之后闪烁
WDI BIT P3.2 ;喂狗的信号
PEN BIT P3.3 ; 控制PLL
PDAT BIT P3.4
PCLK BIT P3.5
SDA BIT P3.6 ;;用来写24WC02
SCL BIT P3.7
;****************************************************************************
F_COMMAND BIT 01H ;给LCD发送命令或数据的标志,当发出命令字时,=1
F_MOVED BIT 02H ;是否已经循环移位的标志
F_REFRESH BIT 03H ;2秒钟重新刷新LCD,或者是在GET_BUFF满了以后 ,来新的数据,就立即移动和刷新
G:\备份\LDTP\旧的备份\LCD89527.ASM
页 2
07-20-02
19:29:54
伟福汇编器 V5.00 Copyright (c) 1989, 99 by CHY
地址 机器码 源程序
F_KEY_FOUND BIT 04H ;
F_KEY_VALUE BIT 05H ;收到了按键的标志
F_HIGH BIT 07H ; 是否是已经处理过高位的标志
F_MOV BIT 08H ;是否启动移位的标志
ACK BIT 09H ;I2C接收数据非应答标志
F_GENGGAI_STEP0 BIT 0AH ;设置中,更改的第一个步骤完成的标志
F_BLANK BIT 0BH ;是否是输入一次“空格”键的标志
F_FULL BIT 0CH ;输入的台号是否已经满了10个
F_DIS_CALL BIT 0DH ;是否是显示了CALL的画面
F_DIS_CALL_2 BIT 0EH ;
F_SEND_END BIT 0FH ;
F_GET BIT 016H ;接收到从764来的数据的标志
;*******************************************************************************
COMMAND EQU 030H ;控制LCD的命令
X_ADD EQU 031H
Y_ADD EQU 032H
TIMER_2S_0 EQU 033H ;2秒刷新一次屏幕的计数器
SHUZI EQU 034H ;要显示的数字存放点
PAIDUI EQU 035H ;收到的信号的排队的指针
KEY_LAST_TIME EQU 036H
KEY_NO EQU 037H ;按键值
KEY_GESHU EQU 038H ;按键的个数
OLD_KEY_NO EQU 039H
MSG_TEMP EQU 03AH ;
DPH_BAK EQU 03CH
DPL_BAK EQU 03DH ;计算出来的存放显示的台号的高位的DPTR
GET_BUFF EQU 040H ;接收的数据存放区,需要一个指针指向,最多放6个
TIMER_BUFF EQU 049H ;每个信息已经显示的时间
SEND_BYTE EQU 51H
SEND_BIT_NUM EQU 52H
SEND_BYTE_NUM EQU 53H
SEND_STRU EQU 54H
POC_NUM EQU 55H ; POCSAG DATA 1ST BYTE
; HIGH 4 BIT POCSAG NUM (32BIT=1)
; LOW 4 BIT ZHENG_HAO , 8 = ALL
G:\备份\LDTP\旧的备份\LCD89527.ASM
页 3
07-20-02
19:29:54
伟福汇编器 V5.00 Copyright (c) 1989, 99 by CHY
地址 机器码 源程序
BitCnt DATA 56H ; I2C 数据位计数器
ByteCnt DATA 57H ; I2C 数据字节计数器
SlvAdr DATA 58H ;被控器地址
SubAdr DATA 59H ;被控器单元地址
OUT_BUFF EQU 060H ;输出的数据的存储区,前面4个保持0,使地址位1000000
SAVE_BUFF EQU 090H
KEY_AERA EQU 0A0H ;接受的按键的存放区,
XmtDat DATA 0B0H ;发送数据缓冲区,
RcvDat DATA 0C0H ;接收数据缓冲区
;**********************以下是进入设置功能是使用的RAM,分时使用*****************************
CALL_BAK DATA 64H ;初始化中,公共的CALL机号码暂存区
TAI_GESHU DATA 65H ;初始化中,输入的台号的个数
SHUZI_GESHU DATA 66H ;初始化中,输入的台号的数字的个数,用来限制输入的个数和处理
BLANK_GESHU DATA 67H ;空格的个数
OLD_Y_ADD DATA 7BH ;眼前这个数据显示的Y的地址
OLD_X_ADD DATA 7CH ;眼前这个数据显示的X的地址,用来处理数据输入时的换行
;*************************************************************************
TEN_SEC DATA 0FAH ;立即数,现在改为18秒定时
EEPROM EQU 0A0H ;24wc02的地址 立即数
;***************************************************************************
ORG 0000H
0000 02002D LJMP SYS_START
ORG 000BH ; TIME0 OUT
000B 00 NOP
000C 00 NOP
000D 0206DA LJMP TIMER0_INT ;40MS一次,用来记时,
ORG 001BH ; TIME1 OUT
001B 32 RETI
ORG 0023H ; COM I/O
0023 00 NOP
0024 00 NOP
0025 020445 LJMP S_INT
G:\备份\LDTP\旧的备份\LCD89527.ASM
页 4
07-20-02
19:29:54
伟福汇编器 V5.00 Copyright (c) 1989, 99 by CHY
地址 机器码 源程序
ORG 002BH
002B 00 NOP
002C 32 RETI
;****************************************************
SYS_START:
002D C2AF CLR EA
002F 00 NOP
0030 7581F0 MOV SP,#0F0H
0033 C2D3 CLR RS0
0035 C2D4 CLR RS1
0037 758850 MOV TCON,#050H ;外部中断1下降沿触发
003A 758700 MOV PCON,#00H ;SMOD=1加倍,SMOD=0,不加倍
003D 759850 MOV SCON,#01010000B ;10位,方式1,允许串口接收,一个起始位,一个停止位,8个数据
0040 758921 MOV TMOD,#021H ;定时器T1为方式2,T0为16位计时器
0043 758DFA MOV TH1,#0FAH ;11.0592M,4.8kBPS
0046 758BFA MOV TL1,#0FAH
0049 D2A9 SETB ET0
;SETB ES
004B D2AF SETB EA
;***********************************************************************
CLEAR_RAM:
004D 7800 MOV R0,#00H
CLEAR_RAM0:
004F 7600 MOV @R0,#00H
0051 08 INC R0
0052 E8 MOV A,R0
0053 00 NOP
0054 00 NOP
0055 B4F0F7 CJNE A,#0F0H,CLEAR_RAM0
0058 00 NOP
0059 00 NOP
005A 75331E MOV TIMER_2S_0,#30 ;
G:\备份\LDTP\旧的备份\LCD89527.ASM
页 5
07-20-02
19:29:54
伟福汇编器 V5.00 Copyright (c) 1989, 99 by CHY
地址 机器码 源程序
005D D2D4 SETB RS1 ;预先设置按键区
005F C2D3 CLR RS0
0061 78A0 MOV R0,#KEY_AERA
0063 C2D4 CLR RS1
0065 C2D3 CLR RS0
;********************初始化********************************************
;开机检测是否进入设置状态
;**********************************************************************
0067 C297 CLR P1.7
0069 E590 MOV A,P1
006B 540F ANL A,#0FH
006D 00 NOP
006E B40715 CJNE A,#07H,NORMAL_PRO
0071 1209CC LCALL DELAY_1MS
0074 1209CC LCALL DELAY_1MS
0077 C297 CLR P1.7
0079 E590 MOV A,P1
007B 540F ANL A,#0FH
007D 00 NOP
007E B40705 CJNE A,#07H,NORMAL_PRO
0081 00 NOP
0082 00 NOP
0083 0209F5 LJMP SETUP_PRO ;检测到长时间按下的F,就跳到设置部分
NORMAL_PRO:
;**********************************************************************************
;***********************************************************************
; LCD 初始化
;**********************************************************************
;CLR RST
;LCALL DELAY_1MS
;SETB RST
0086 D201 SETB F_COMMAND
0088 75303E MOV COMMAND,#03EH
008B 12086B LCALL LCD_COMMAND
008E D201 SETB F_COMMAND
0090 7530C0 MOV COMMAND,#0C0H
0093 12086B LCALL LCD_COMMAND
0096 D201 SETB F_COMMAND
0098 75303F MOV COMMAND,#03FH
009B 12086B LCALL LCD_COMMAND
G:\备份\LDTP\旧的备份\LCD89527.ASM
页 6
07-20-02
19:29:54
伟福汇编器 V5.00 Copyright (c) 1989, 99 by CHY
地址 机器码 源程序
009E 120896 LCALL CLRLCD
00A1 1207C2 LCALL DISPLAY_ALL ;显示开机欢迎画面
00A4 D2AC SETB ES
;***********************************************************************
MAIN:
00A6 300807 JNB F_MOV,MAIN2
00A9 C208 CLR F_MOV
00AB 00 NOP
00AC 00 NOP
00AD 1206AA LCALL R_MOV
;SETB F_REFRESH ;启动刷新
;*************刷新屏幕的程序***************************
MAIN2:
00B0 00 NOP
00B1 00 NOP ; 移动在显示之前
00B2 300311 JNB F_REFRESH,MAIN3
00B5 00 NOP
00B6 00 NOP
00B7 30020C JNB F_MOVED,MAIN3 ;如果没有移动,不用刷新
00BA 00 NOP
00BB 00 NOP
00BC 12047A LCALL DIS_REFRESH ;刷新一次需要时间最多100MS
00BF C203 CLR F_REFRESH
00C1 C202 CLR F_MOVED
00C3 0200A6 LJMP MAIN
;*****************************收到从串口过来的数据的处理**********************
MAIN3:
00C6 00 NOP
00C7 00 NOP
00C8 301628 JNB F_GET,MAIN4
00CB C216 CLR F_GET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -