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

📄 pixel_on.asm

📁 c51和汇编混合编程
💻 ASM
字号:
;;**************************************
;;    PIXEL_ON, LCD program
;;**************************************

           prepixelx equ  30h
           prepixely equ  31h
           predata   equ  32h
           PROG SEGMENT CODE
           public _PIXEL_ON
           ;;STACK SEGMENT IDATA
           ;;RSEG STACK
           ;;DS 10H  ; 16 Bytes Stack
           CSEG AT 0
           USING 0 ; Register-Bank 0
;;Execution starts at address 0 on power-up.
;;SHOW_DATA(uint8 x,uint8 y)
;;R7=x, R5=y

           RSEG PROG
_PIXEL_ON:

      MOV    A,R7  ;;X
      ANL    A,#80H
      JNZ    LOOP2
      MOV    A,R7
      ANL    A,#40H
      JNZ    LOOP1

LOOP0:
      MOV    A,R7  
      ADD    A,#40H
      MOV    R7,A
      MOV    R0,A
      CALL   OUTI0    ;; set Y address
      MOV    B,#08H
      MOV    A,R5
      DIV    AB
      ADD    A,#0B8H
      MOV    R0,A
      mov    r6,a     
      MOV    R2,B
      CALL   OUTI0    ;; set page(X) address
      MOV    A,R2
      JNZ    DIAN00
      INC    A
      JMP    DIAN01
DIAN00:
      MOV    A,#01H
LOOP00:
      RL     A
      DJNZ   R2 , LOOP00
DIAN01:
      MOV    R2,A
      mov    a,prepixelx 
      xrl    A,R7
      jnz    DIAN02
      mov    a,prepixely
      xrl    a,r6
      jnz    DIAN02  
      mov    a,predata
      ORL    A,R2
      mov    r2,a
DIAN02:
      mov    a,r2
      mov    predata,a
      MOV    R0,A
      CALL   OUTD0
      mov    prepixelx,r7
      mov    prepixely,r6
      
      RET
;;**************************************
LOOP1:
      MOV    A,R7  
      anl    a,#3FH
      ADD    A,#40H
      MOV    R7,A
      MOV    R0,A
      CALL   OUTI1    ;; set Y address
      MOV    B,#08H
      MOV    A,R5
      DIV    AB
      ADD    A,#0B8H
      MOV    R0,A
      mov    r6,a     
      MOV    R2,B
      CALL   OUTI1    ;; set page(X) address
      MOV    A,R2
      JNZ    DIAN10
      INC    A
      JMP    DIAN11

DIAN10:
      MOV    A,#01H
LOOP10:
      RL     A
      DJNZ   R2 , LOOP10
DIAN11:
      MOV    R2,A
      mov    a,prepixelx 
      xrl    A,R7
      jnz    DIAN12
      mov    a,prepixely
      xrl    a,r6
      jnz    DIAN12  
      mov    a,predata
      ORL    A,R2
      mov    r2,a
DIAN12:
      mov    a,r2
      mov    predata,a
      MOV    R0,A
      CALL   OUTD1
      mov    prepixelx,r7
      mov    prepixely,r6
      
      RET

;;**************************************
LOOP2:
      MOV    A,R7  
      anl    a,#3FH
      ADD    A,#40H
      MOV    R7,A
      MOV    R0,A
      CALL   OUTI2    ;; set Y address
      MOV    B,#08H
      MOV    A,R5
      DIV    AB
      ADD    A,#0B8H
      MOV    R0,A
      mov    r6,a     
      MOV    R2,B
      CALL   OUTI2    ;; set page(X) address
      MOV    A,R2
      JNZ    DIAN20
      INC    A
      JMP    DIAN21

DIAN20:
      MOV    A,#01H
LOOP20:
      RL     A
      DJNZ   R2 , LOOP20
DIAN21:
      MOV    R2,A
      mov    a,prepixelx 
      xrl    A,R7
      jnz    DIAN22
      mov    a,prepixely
      xrl    a,r6
      jnz    DIAN22  
      mov    a,predata
      ORL    A,R2
      mov    r2,a
DIAN22:
      mov    a,r2
      mov    predata,a
      MOV    R0,A
      CALL   OUTD2
      mov    prepixelx,r7
      mov    prepixely,r6
      
      RET      


OUTI0:
      MOV    DPTR,#6FF1H  ;;WRITE DDRAM  ADDRESS
      MOV    A,#010H      ;;E=1, RW=0, DI=0, CS2=0, CS1=0
      MOVX   @DPTR,A
      MOV    DPTR,#6FF0H
      MOV    A,R0
      MOVX   @DPTR,A
      MOV    DPTR,#6FF1H
      MOV    A,#00H
      MOVX   @DPTR,A
      MOV    DPTR,#6FF1H
      MOV    A,#03H
      MOVX   @DPTR,A
      RET

OUTD0:
      MOV    DPTR,#6FF1H   ;;WRITE DISPLAY DATA
      MOV    A,#014H       ;;E=1, RW=0, DI=1, CS2=0, CS1=0
      MOVX    @DPTR,A
      MOV    DPTR,#6FF0H
      MOV    A,R0
      MOVX   @DPTR,A
      MOV    DPTR,#6FF1H
      MOV    A,#04H
      MOVX   @DPTR,A
      MOV    DPTR,#6FF1H
      MOV    A,#07H
      MOVX   @DPTR,A
      RET

OUTI1:
      MOV    DPTR,#6FF1H    ;;WRITE DDRAM  ADDRESS
      MOV    A,#012H        ;;E=1, RW=0, DI=0, CS2=1, CS1=0
      MOVX   @DPTR,A
      MOV    DPTR,#6FF0H
      MOV    A,R0
      MOVX   @DPTR,A
      MOV    DPTR,#6FF1H
      MOV    A,#00H
      MOVX   @DPTR,A
      MOV    DPTR,#6FF1H
      MOV    A,#03H
      MOVX   @DPTR,A
      RET
OUTD1:
      MOV    DPTR,#6FF1H   ;;WRITE DISPLAY DATA
      MOV    A,#016H       ;;E=1, RW=0, DI=1, CS2=1, CS1=0
      MOVX    @DPTR,A
      MOV    DPTR,#6FF0H
      MOV    A,R0
      MOVX   @DPTR,A
      MOV    DPTR,#6FF1H
      MOV    A,#04H
      MOVX   @DPTR,A
      MOV    DPTR,#6FF1H
      MOV    A,#07H
      MOVX   @DPTR,A
      RET

OUTI2:
      MOV    DPTR,#6FF1H    ;;WRITE DDRAM  ADDRESS
      MOV    A,#011H        ;;E=1, RW=0, DI=0, CS2=0, CS1=1
      MOVX   @DPTR,A
      MOV    DPTR,#6FF0H
      MOV    A,R0
      MOVX   @DPTR,A
      MOV    DPTR,#6FF1H
      MOV    A,#00H
      MOVX   @DPTR,A
      MOV    DPTR,#6FF1H
      MOV    A,#03H
      MOVX   @DPTR,A
      RET

OUTD2:
      MOV    DPTR,#6FF1H   ;;WRITE DISPLAY DATA
      MOV    A,#015H       ;;E=1, RW=0, DI=1, CS2=0, CS1=1
      MOVX    @DPTR,A
      MOV    DPTR,#6FF0H
      MOV    A,R0
      MOVX   @DPTR,A
      MOV    DPTR,#6FF1H
      MOV    A,#04H
      MOVX   @DPTR,A
      MOV    DPTR,#6FF1H
      MOV    A,#07H
      MOVX   @DPTR,A
      RET

ReadData:
      MOV     DPTR,#6FF3H   ;;SET 8255 PA READ
      MOV     A,#99H
      MOVX    @DPTR,A

      MOV    DPTR,#6FF1H    ;;WRITE DDRAM  ADDRESS
      MOV    A,R3        ;; E=0,
      MOVX   @DPTR,A
      MOV    A,R3        ;;E=1, RW=1, DI=1, CS2, CS1
      ORL    A,#10H
      MOVX   @DPTR,A
      MOV    A,R3
      MOVX   @DPTR,A
      MOV    DPTR,#6FF0H
      MOVX   A,@DPTR
      MOV    R1,A

      MOV     DPTR,#6FF3H   ;;SET 8255 PA WRITE
      MOV     A,#89H
      MOVX    @DPTR,A

      RET


ReadBusy:
      MOV     DPTR,#6FF3H   ;;SET 8255 PA READ
      MOV     A,#99H
      MOVX    @DPTR,A

      MOV    DPTR,#6FF1H    ;;WRITE DDRAM  ADDRESS
      MOV    A,#18H        ;;E=1, RW=1, DI=0
      MOVX   @DPTR,A
      MOV    DPTR,#6FF0H
      MOVX   A,@DPTR
      MOV    R4,A

      MOV     DPTR,#6FF3H   ;;SET 8255 PA WRITE
      MOV     A,#89H
      MOVX    @DPTR,A


      RET

      END


⌨️ 快捷键说明

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