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

📄 tongji2a.asm

📁 该测量仪是由一种多功能、多用途测量轻烃中含水量的智能化仪表。它的一次表采用进口的水份和温度传感器。二次表为带微控制器的数据处理显示部分。采用51汇编编写。
💻 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 + -