📄 tongji2a.asm
字号:
;;在TONGJI8.ASM基础上改动
;;界面有较大的改动
;;加AD转换
;;加数据处理
;;温度处理有错误,后改动
;;AD转换采集8次,取平均值
;;加定时中断 --- 3分钟
;;加参数设置界面!!
;;曲线显示加了4舍5入!!!
;;度零下显示 正常!!前面的版本异常
;;把参数设置界面加到子程序里
;;加扫描键盘
;;带24256串行EEPROM的读写
;;程序运行有问题,主界面无法正常显示------在11月11日6点44分改正!!!
;;程序优化!!
;;修正公式=K*X +/- B
;;K=0.01~9.99,温度B=-99.9~+99.9,水份B=-99.99~+99.99
;;加输入密码保护!!!
;;修正值输入测试成功!!
;;修正值加入运算!!
;;加声光报警
ORG 0000H
RESET: AJMP MAIN
ORG 000BH ;;TO定时中断输入
LJMP T0_INT
;;P2.6控制A0----- 寄存器选择端(高电平有效)
;;P2.7控制LCDCS------片选端(低电平有效)
;;*********************************
;; CS A0 RD WR 功能
;; 1 X X X 禁止操作
;; 0 0 0 1 读状态标志位
;; 0 0 1 0 写指令参数和显示数据
;; 0 1 0 1 读显示数据和光标指针
;; 0 1 1 0 写指令代码
;;**************************
; 直接访问方式地址定义,根据用户平台接口修改
CWADD1 EQU 0c000h;0e641H ; 写指令代码地址
DWADD1 EQU 08000h;0e600H ; 写参数及显示数据地址
DRADD1 EQU 0c000h;0e641H ; 读参数及显示数据地址
CRADD1 EQU 08000h;0e600H ; 读忙状态地址
DATBUS EQU P1 ; 数据总线
; 程序参数定义,根据用户选择的LCM型号修改
PARA1 EQU 30H ; 应用于DMF50081/50174(320*240)
; 程序参数库.
;-------------- DMF-50081/50174 的SYSTEM SET 参数 --------------
SYSTAB: DB 30H,87H,07H,27H,42H,0F0H,30H,00H ; P1-P8参数
SCRTAB: DB 00H,00H,0F0H,00H,40H,0F0H,00H,80H,00H,00H ; P1-P10参数
; 程序变量定义,根据用户平台提供的内部资源修改
COM EQU 30H ; 指令寄存器
DAT1 EQU 31H ; 参数及显示数据寄存器
COUNT1 EQU 32H ; 计数器1
COUNT2 EQU 33H ; 计数器2
O_XL EQU 34H ; X坐标低8位寄存器(字节)
; X坐标低8位寄存器(点列)
O_XH EQU 35H ; X坐标高8位寄存器(点列)
; D7位为绘点(D7=1)和消点(D7=0)标志位
O_YL EQU 36H ; Y坐标寄存器(字符行/点行)
LCODE EQU 37H ; 汉字代码
CFLUG EQU 10H ; 位标志。表示字符的写入方式
; CFLUG=1为初次写入;CFLUG=0为接续写入
LINE_XH EQU 38H
LINE_XL EQU 39H ;;曲线X轴坐标值
INT_NUML EQU 3AH ;;中断次数
INT_NUMH EQU 3BH
; AD转换用
CLK EQU P1.3
DIN EQU P1.4
DOUT EQU P1.5
CS EQU P1.6
;;****************************
;;数学运算
;;键盘用
COUNTKEY_X EQU 3CH
COUNTKEY_Y EQU 3DH
;SET_WEN_FU BIT 0DH
;SET_SHUI_FU BIT 0EH
SET_WEN1 EQU 26H
SET_WEN2 EQU 27H
SET_WEN3 EQU 28H
SET_SHUI1 EQU 29H
SET_SHUI2 EQU 2AH
SET_SHUI3 EQU 2BH
SET_SHUI4 EQU 2CH
set_fu equ 2dh
KEY_TEMPX EQU 2eH
KEY_TEMPY EQU 2fH
;;****************************
;;密码按键用
COUNTMI_X EQU 70H
SET_MI0 EQU 71H
SET_MI1 EQU 72H
SET_MI2 EQU 73H
SET_MI3 EQU 74H
SET_MI4 EQU 75H
;;*****************************
;;设置参数的界面用参数
;;所有参数保存时都转换为二进制数
WEN_B_FU BIT 0DH
SHUI_B_FU BIT 0EH
WEN_KH EQU 25H
WEN_KL EQU 26H
WEN_BH EQU 27H
WEN_BL EQU 28H
SHUI_KH EQU 29H
SHUI_KL EQU 2AH
SHUI_BH EQU 2BH
SHUI_BL EQU 2CH
FUHAO EQU 2DH
;;******************************
;;参数BCD数暂存
WEN_K1 EQU 70H
WEN_K2 EQU 71H
WEN_K3 EQU 72H
WEN_B1 EQU 73H
WEN_B2 EQU 74H
WEN_B3 EQU 75H
SHUI_K1 EQU 76H
SHUI_K2 EQU 77H
SHUI_K3 EQU 78H
SHUI_B1 EQU 79H
SHUI_B2 EQU 7AH
SHUI_B3 EQU 7BH
SHUI_B4 EQU 7CH
;;******************************
;;24256串行EEPROM
SCL_IIC BIT p3.4;; P1.0
SDA BIT p3.5;; P1.1
SLV_ADDR EQU 0101B ;;固定从地址控制码
ACK_READ EQU 10000101B ;;应答检测读命令
;;
PAGE_DATA EQU 50H
BLK_ADDR EQU 51H
BYTE_ADDRH EQU 52H ;;EPROM的地址高8位
BYTE_ADDRL EQU 53H
BYTE_DATA EQU 54H
;;*****************************************************
ORG 0100H
MAIN: ;;LJMP SET_CANSHU
;setb P1.0
;LJMP BY1
CLR P1.0
LCALL DELAY1
LCALL INT
LCALL CLEAR
nop
lcall discha ;;开机画面
MAIN_FACE:
LCALL CLEAR
MOV BLK_ADDR, #000B ;;初始化选通地址
MOV BYTE_DATA, #08fH ;;字节数据
MOV BYTE_ADDRh, #00H ;;;字节地址
mov byte_addrl, #00h
MOV PAGE_DATA, #0AAH;; 页面数据
mov r1,#25h
lCALL SEQ_RD ;调顺序地址读
;;68H,69H都是2DH(FUHAO)的位
MOV c,68H
MOV WEN_b_FU,c
MOV c,69H
MOV SHUI_B_FU,c
;;**************************
LCALL ZHUJIEMIAN
lcall zhujiemian_tu
;;打开AD转换;
;;********************************************
BY1:
;;曲线坐标位置X轴的坐标 初始化
MOV LINE_XH,#80H ;;LINE_XH=38H
MOV LINE_XL,#28 ;;LINE_XL=39H
A_D:
NOP
DATA_SAM:
MOV R0,#40H ;数据缓冲区首地址40H→R0
clr a
mov r7,a
ad_count:
MOV R1,#00000000B ;通道方式/通道数据
lCALL RD_AD ;第一次读取的转换结果可能不准确,丢弃。
nop
nop
nop
nop
MOV R1,#00010000B ;1通道方式/通道数据
lCALL RD_AD
nop
nop ;送1通道方式/通道数据并读第0通道转换结果
mov a,r2
MOV @R0,a ;转换结果存放到数据缓冲区,下同
INC R0
mov a,r3
MOV @R0,a
INC R0
;* INC R0 ;;取一次转换时,必须要
MOV R1,#00000000B ;2通道方式/通道数据
lCALL RD_AD ;送2通道方式/通道数据并读第1通道转换结果
mov a,r2
MOV @R0,a
INC R0
mov a,r3
MOV @R0,a
inc r0
inc r7
cjne r7,#8,ad_count
NOP
;;*********************************
;;数据初步处理:
;;水份:
MOV R6,#0
MOV R5,#0
MOV R1,#40H
MOV R7,#0
YIWEI:
MOV R6,#0
MOV R5,#0
MOV A,@R1
MOV R4,A
YIWEI_A:
CLR C
MOV A,R4
RRC A
MOV R4,A
MOV A,R5
RRC A
MOV R5,A
INC R6
CJNE R6,#4,YIWEI_A
MOV A,R4
ORL A,R5
MOV R5,A
NOP
MOV A,R4
MOV @R1,A
INC R1
MOV A,R5
MOV @R1,A
INC R1
INC R7
CJNE R7,#10H,YIWEI
NOP
;;*************************************
;;后加
;;取多次转换值后,取平均值
;;A)把所采的值转换为浮点数
;;水份值处理
MOV R0,#40H
MOV R1,#68H
MOV COUNT1,#0 ;;COUNT1----->此处复用1
FUDIAN_SHUI:
MOV A,@R0
MOV R2,A
INC R0
MOV A,@R0
MOV R3,A
CLR C
INC R0
INC R0
INC R0
CLR 09H ;;3CH
LCALL INTF_old
INC R1
INC R1
INC R1
MOV A,COUNT1
INC A
MOV COUNT1,A
MOV A,COUNT1
CJNE A,#8,FUDIAN_SHUI
NOP
;;B)水份求和取平均值
MOV R0,#68H
MOV R1,#6BH
MOV COUNT1,#0 ;;COUNT1----->此处复用2
QIUHE_SHUI:
CALL FADD
INC R1
INC R1
INC R1
MOV A,COUNT1
INC A
MOV COUNT1,A
MOV A,COUNT1
CJNE A,#8,QIUHE_SHUI
MOV R2,#00H
MOV R3,#08
MOV R1,#6BH
CLR 09H ;; 3CH
LCALL INTF_old
LCALL FDIV
MOV 60H,68H
MOV 61H,69H
MOV 62H,6AH
;;测试结果----后加
MOV R0,#68H
LCALL FINT_OLD
NOP
;;*******************************
;;湿度
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -