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

📄 核终.asm

📁 核磁共振含油测量仪
💻 ASM
📖 第 1 页 / 共 5 页
字号:
;读低4位数据 AD574  CE=1     R/C=1   A0=1
;            CPU             A0=1    A1=1      FFF3H
;
; A/D 转换程序 (AD574A)
;           AD_8        EQU  66H       ;存AD转换高8位结果
;           AD_4        EQU  67H       ;存AD转换低4位结果
;           READ_AD8    EQU  0FFF1H    ;读AD转换高8位结果(CPU A1A0=01)
;           READ_AD4    EQU  0FFF3H    ;读AD转换低4位结果(CPU A1A0=11)
;           STS_AD      EQU  0FFF0H    ;启动AD转换(CPU RD=0 OR WR=0 A0=0)
;           AD_STA      EQU  P1.3      ;AD转换状态检查
;           RAM_ADRH    EQU  60H       ;保护 RAM 地址暂存 高8位
;           RAM_ADRL    EQU  61H       ;保护 RAM 地址暂存 低8位
  AD574:        ORL P1,#0FFH
                ANL P1,#5FH        ;片选 AD574A
                MOV DPTR,#STS_AD
                MOVX @DPTR,A       ;启动 AD 转换
                SETB AD_STA        ;置 AD转换状态检查
     AD_WAIT:   JB AD_STA,AD_WAIT  ;判 AD转换状态
                MOV DPTR,#READ_AD8
                MOVX A,@DPTR       ;读高8位  HHHH,MMMM
                MOV AD_8,A
                MOV DPTR,#READ_AD4
                MOVX A,@DPTR       ;读低4位  XXXX,LLLL
                ORL P1,#0FFH
                MOV R7,AD_8
                MOV A,AD_8
                ANL A,#0F0H
                SWAP A
                MOV AD_8,A          ;AD_8=0000,HHHH
                MOV A,R7
                ANL A,#0FH
                SWAP A
                MOV R7,A
                MOV A,AD_4
                ANL A,#0FH
                ADD A,R7
                MOV AD_4,A          ;AD_4=MMMM,LLLL

                    ;** 数据存放 RAM 程序****************************
                                    ;                   P1.7 P1.6 P1.5
                ANL P1,#3FH         ;片选CS2=IC6264      0    0    1    0011,1111
                MOV DPH,RAM_ADRH    ;取 RAM 地址
                MOV DPL,RAM_ADRL
                MOV A,AD_8          ;A=0000,HHHH
                MOVX @DPTR,A        ;存高位字节
                INC DPTR
                MOV A,AD_4          ;A=MMMM,LLLL
                MOVX @DPTR,A        ;存低位字节
                INC DPTR
                MOV RAM_ADRH,DPH
                MOV RAM_ADRL,DPL
                ORL P1,#0FFH
                RET

;** 读取 RAM6264 程序

   READ_RAM:    ORL P1,#0FFH
                ANL P1,#3FH         ;片选CS2=IC6264      0    0    1    0011,1111
                MOV DPH,RAM_ADRH    ;取 RAM 地址
                MOV DPL,RAM_ADRL
                MOVX A,@DPTR        ;读高位字节
                MOV AD_8,A        ;A=0000,HHHH
                INC DPTR

                MOVX A,@DPTR        ;读低位字节
                MOV AD_4,A          ;A=MMMM,LLLL
                INC DPTR
                MOV RAM_ADRH,DPH
                MOV RAM_ADRL,DPL
                ORL P1,#0FFH
                RET
;***********************
;***** LCD 处理显示程序 ********
wri_cc9:   mov        a,     o_y     ;图形方式下显示汉字
           mov        b,     #20h
           mul        ab
           add        a,     o_x
           mov        o_x,   a
           mov        a,     b
           addc       a,     #08h   ;#08H
           mov        o_y,   a
           mov        dptr,#cctab2
           mov        a,code
           mov        b,#20h
           mul         ab
           add        a,dpl
           mov        dpl,a
           mov        a,b
           addc       a,dph
           mov        dph,a
           push       dph
           push       dpl
           mov        count,#10h
wri_cc18:   mov        dat1,o_x
           mov        dat2,o_y
           mov        com,#24h
           lcall      pr1
           pop        dpl
           pop        dph
           clr        a
           movc       a,@a+dptr
           ;cpl        a  ;********************
           mov        dat2,a
           mov        a,#10h
           movc       a,@a+dptr
           ;cpl        a  ;*******************
           mov        dat1,a
           inc        dptr
           push       dph
           push       dpl
           mov        com,#0c0h
           lcall      pr11
           mov        dat2,dat1
           lcall      pr11
           mov        a,#20h
           add        a,o_x
           mov        o_x,a
           clr        a
           addc       a,o_y
           mov        o_y,a
           djnz       count,wri_cc18
           pop        acc
           pop        acc
            ret
;****
;** 初始化 LCD 时,进入显示的默认状态显示

disp2:     mov        code,#00h    ;图形方式下显示汉字
           mov        o_x,#11h
           mov        o_y,#04h
           lcall      wri_cc9
           mov        code,#01h
           mov        o_x,#13h
           mov        o_y,#04h     ;编号
           lcall      wri_cc9

           LCALL CLR_LCDDAT
           MOV LCD_BUFFER,#10H
           mov        o_x,#35h
           mov        o_y,#00h
           LCALL      WRI_DATA

           mov        code,#02h
           mov        o_x,#11h
           mov        o_y,#1Bh
           lcall      wri_cc9
           mov        code,#03h
           mov        o_x,#13h
           mov        o_y,#1Bh
           lcall      wri_cc9    ;质量

           MOV LCD_BUFFER,#19H
           MOV LCD_BUFFER+1,#19H
           MOV LCD_BUFFER+2,#0EH
           MOV LCD_BUFFER+3,#19H
           MOV LCD_BUFFER+4,#19H
           MOV LCD_BUFFER+5,#19H
           ;LCALL CLR_LCDDAT
           mov        o_x,#95h
           mov        o_y,#00h
           LCALL      WRI_DATA

           mov        code,#04h
           mov        o_x,#11h
           mov        o_y,#4Ah
           lcall      wri_cc9
           mov        code,#05h
           mov        o_x,#13h
           mov        o_y,#4Ah
           lcall      wri_cc9
           mov        code,#06h
           mov        o_x,#15h
           mov        o_y,#4Ah
           lcall      wri_cc9    ;含油率

           LCALL CLR_LCDDAT
           MOV LCD_BUFFER,#11H
           MOV LCD_BUFFER+1,#10H
           MOV LCD_BUFFER+2,#10H
           MOV LCD_BUFFER+3,#05H
           mov        o_x,#57h
           mov        o_y,#01h
           LCALL      WRI_DATA

           mov        code,#07h
           mov        o_x,#11h
           mov        o_y,#33h
           lcall      wri_cc9
           mov        code,#08h
           mov        o_x,#13h
           mov        o_y,#33H        ;12h
           lcall      wri_cc9     ;时间

           LCALL CLR_LCDDAT
           MOV LCD_BUFFER,#14H
           mov        o_x,#0F5h
           mov        o_y,#00h
           LCALL      WRI_DATA

           ;mov        code,#09h
           ;mov        o_x,#13h
           ;mov        o_y,#46h
           ;lcall      wri_cc9
           ;mov        code,#0ah
           ;mov        o_x,#15h
           ;mov        o_y,#46h
           ;lcall      wri_cc9     ;命令

           ;mov        code,#0bh
           ;mov        o_x,#13h
           ;mov        o_y,#56h
           ;lcall      wri_cc9
           ;mov        code,#0ch
           ;mov        o_x,#15h
           ;mov        o_y,#56h
           ;lcall      wri_cc9      ;检查

           LCALL LCD_MINGL
           ret

 LCD_MINGL:     mov        code,#09h
           mov        o_x,#11h
           mov        o_y,#69h
           lcall      wri_cc9
           mov        code,#0Ah
           mov        o_x,#13h
           mov        o_y,#69h
           lcall      wri_cc9      ;命令
           LCALL CLR_LCDDAT
           mov        o_x,#0D5h
           mov        o_y,#01h
           LCALL      WRI_DATA
           RET
           ;
;*******
clear12:     mov        dat1,  #00h
           mov        dat2,  #00h
           mov        com,   #24h
           lcall             pr1
           mov        r3,    #00h
           mov        r4,    #78h  ;20H
           mov        com,   #0b0h
           lcall             pr12
clear11:    lcall             st3
           mov        a,     #00h     ;#0ffh
           lcall             pr13
           djnz       r3,    clear11
           djnz       r4,    clear11
           mov        com,   #0b2h
           lcall             pr12
           ret
DELAY:  mov     r2 ,#25h
delay3:  MOV     40H,#00H        ;DELAY TIME 1
DELAY1: MOV     41H,#00H
DELAY2: DJNZ    41H,DELAY2
        DJNZ    40H,DELAY1
DELAYA1:
        DJNZ    R2,DELAY1
        RET
d1s:    ;mov r2,#01h
 d1s3:  mov r3,#00h
 d1s2:  mov r4,#0C2h
        djnz r4,$
        JNB KEY_ZERO,ERK
        djnz r3,d1s2
        djnz r2,d1s3
  ERK:  ret

;------------------------------------------------------------------
;write struction and write data
;------------------------------------------------------------------
pr1:       ORL P1,#0FFH
           ANL P1,#0BFH
           lcall       st01         ;dual byte
           mov        a,dat1
           lcall      pr13
pr11:      ORL P1,#0FFH
           ANL P1,#0BFH
           lcall       st01         ;dual byte
           mov        a,dat2
           lcall      pr13
pr12:      ORL P1,#0FFH
           ANL P1,#0BFH
           lcall       st01         ;dual byte
           mov        a,com
           ljmp       pr14
pr13:      ORL P1,#0FFH
           ANL P1,#0BFH
           mov        dptr,#d_add
pr14:      ORL P1,#0FFH
           ANL P1,#0BFH
           movx       @dptr,a
           ORL P1,#0FFH
           ret
;read  state word
r_st:      mov        dptr,#c_add
           movx       a,@dptr
           ret
;award  busy  s0,s1
st01:      lcall     r_st
           jnb       acc.0,st01
           jnb       acc.1,st01
           ret
;award  busy  s3,
st3:       ORL P1,#0FFH
           ANL P1,#0BFH
           lcall     r_st
           jnb       acc.3,st3
           ORL P1,#0FFH
           ret


; 入口: O_X,O_Y = LCD上要显示数据的坐标值,
;       LCD 上的地址从 00H(字节)开始排列,O_Y=高字节,O_X=低字节
;       LCD_BUFFER--BUFFER+5 存要显示的"数据"(LCD显示码)
WRI_DATA:  mov        dat1,o_x
           mov        dat2,o_y
           mov        com,#24h
           lcall      pr1


           MOV        A,#1AH   ; 显示":"
           mov        dat2,a
           mov        com,#0c0h
           lcall      pr11

           mov        dat2,LCD_BUFFER;
           lcall      pr11
           mov        dat2,LCD_BUFFER+1
           lcall      pr11
           mov        dat2,LCD_BUFFER+2
           lcall      pr11
           mov        dat2,LCD_BUFFER+3
           lcall      pr11
           mov        dat2,LCD_BUFFER+4
           lcall      pr11
           mov        dat2,LCD_BUFFER+5
           lcall      pr11
           ret
           ;
CLR_LCDDAT: MOV A,#00H
            MOV R4,#06H
            MOV R0,#LCD_BUFFER
  CLR_LCDD: MOV @R0,A
            INC R0
            DJNZ R4,CLR_LCDD
            RET
;*******
lcd_ini:   ;orl p1,#0ffh            ;LCD 初始化
           ;anl   p1,   #0bfh

           clr              res
           nop
           nop
           setb               res
int:       mov        dat1,  #00h             ;set text disp area first address
           mov        dat2,  #00h
           mov        com,   #40h
           lcall             pr1
           mov        dat1,  #20h
           mov        dat2,  #00h
           mov        com,   #41h
           lcall             pr1

           mov        dat1,  #00h
           mov        dat2,  #08h     ;#08h
           mov        com,   #42h
           lcall             pr1
           mov        dat1,  #20h
           mov        dat2,  #00h
           mov        com,   #43h
           lcall             pr1

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -