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

📄 updatescreen.msa

📁 ATJ2091N 54版源程序
💻 MSA
字号:
/**********************************************************************************                       ACTOS*                  ui dirver show picture**                (c) Copyright 2002-2003, Actions Co,Ld.*                        All Right Reserved** File   : UI_ShowPic.msa* By     : Chliang* Version: 1> v1.00     first version     12/07/2003 10:46PM*********************************************************************************/#include "UI_S0724.h"#include "irq.h"    module  UpdateScreen    public  UpdateScreen    public  sUI_CmdTrans        rseg    UI_RCODE        extern  DisplayBuffer    extern  UpdStartColumnH    extern  UpdStartColumnL    extern  UpdWidth    extern  UpdPgNum    extern  CurrentPg    extern  REG02_Buff    extern  REG2f_Buff    extern  REGee_Buff	              #define     TallestPgNum    0xb3        //large,在有些情况下,这里需要修改,如第一PAGE不是0XB3的时候//***************************************************************************/*** FUNCTION:    UpdateScreen** PURPOSE:     UpdateScreen** PARAMETERS:**  input**      de=图片范围结构region_t的指针**      typedef struct**      {**        char x;         //列位置**        char y;         //页位置**        char width;     //宽度**        char hight;     //高度 以page为单位**      }region_t;**  output**      none** DESCRIPTION://***************************************************************************/UpdateScreen:    push    ix    push    bc    push    de        ld      a,e                         //region=NULL    or      d    jr      nz,lsUpdSectionScr    xor     a    ld      (UpdStartColumnL),a    ld      (CurrentPg),a    ld      a,10h    ld      (UpdStartColumnH),a    //ybfu    ld      a,DisplaySuppPage    ld      (UpdPgNum),a    //ybfu    ld      a,Displaylength    ld      (UpdWidth),a    jr      lsUpdBeginlsUpdSectionScr:    push    de    pop     ix        ld      a,(ix+2)                //宽    or      a    jr      z,lsUpdScreenEnd    ld      (UpdWidth),a    ld        b,a                        //ybfu        //注意,为了程序的精简,这里没有越界的处理    ld      a,(ix+0)                //列    ld      e,a       //*****************************    change by ybfu for 越界处理    add        a,b    cp      Displaylength+1    jr      c,lsUpdSectionScrConti1    //ybfu    ld      a,Displaylength    sub     e                       //减当前列    ld      (UpdWidth),alsUpdSectionScrConti1:    ld        a,e    //************************        ybfu          and     0fh    ld      (UpdStartColumnL),a    ld      a,e    srl     a    srl     a    srl     a    srl     a    set     4,a    ld      (UpdStartColumnH),a        ld      a,(ix+1)                //行    ld      b,a    srl     a    srl     a    srl     a    ld      (CurrentPg),a    ld      c,a        ld      a,(ix+3)                //高    add     a,b    srl     a    srl     a    srl     a    sub     c    ld      (UpdPgNum),alsUpdBegin:          //ybfu                         ld      hl,DisplayBuffer    ld      d,0                     //e=列    add     hl,de                   //没加Page的Buffer地址    ld      a,(CurrentPg)    or      a    ld      c,0    //ybfu    ld      de,Displaylength    jr      z,lsStartUpd    ld      c,a    ld      b,a                     //循环次数lsGetUpdStartAddr:    add     hl,de    djnz    lsGetUpdStartAddrlsStartUpd:    ld      a,(UpdWidth)            //宽              ld      b,a                     //b=宽lsUpdLoop:    call    sUpdOnePage             //输入参数 b=长度,c=Page选择,hl=Buffer地址    add     hl,de    inc     c                       //c=Page选择    ld      a,(UpdPgNum)    dec     a    ld      (UpdPgNum),a    jr      nz,lsUpdLooplsUpdScreenEnd:    pop     de    pop     bc    pop     ix    retsUpdOnePage:                                //输入参数 b=长度,c=Page选择,hl=Buffer地址    push    bc    push    de    push    hl    mDI        in    a,(REG02_EMHiPageReg)    //REG02 bak    ld    (REG02_Buff),a    in    a,(REG02_EMHiPageReg)    or    CE_EN_BIT    out   (REG02_EMHiPageReg),a             ld      a,TallestPgNum              //定义Page为相反    sub     c    ld      c,a    call    sUI_CmdTrans        //change by ybfu 2004-2-27 17:47    ld      a,(UpdStartColumnH)         //设Column高四位    ld      c,a    ld        a,(UpdStartColumnL)    cp        0ch    jr        c,NotAddHighCol                                      inc        cNotAddHighCol:                call    sUI_CmdTrans    ld      a,(UpdStartColumnL)         //设Column低四位    add     a,04h                      //change by ybfu 2004-2-6 10:27    and        0fh                //change by ybfu 2004-2-27 16:06    ld      c,a    call    sUI_CmdTrans    call    sUI_TransPage               //输入参数b=长度,hl=Buffer地址            ld      a,(REG02_Buff)    out     (REG02_EMHiPageReg),a        //CE 恢复                     mEI    pop     hl               pop     de    pop     bc    ret//********************************************************/*** FUNCTION:    CmdTransport** PURPOSE:    Trasnport one Byte  CMD data to ST7565** PARAMETERS:    动到寄存器A**         input---none**        output---none** DESCRIPTION: 注意这里的函数和硬件外围I/O分配关系密切,改动时要小心*///********************************************************sUI_CmdTrans:    push    bc    in    a,(A0_GIO_DATA_REG)        //LCM A0=0;     and      A0_CLR_BIT    out    (A0_GIO_DATA_REG),a    ld    a,c    ld    (0x8000),a    pop     bc    ret//******************************************************sUI_TransPage:            in    a,(A0_GIO_DATA_REG)        //LCM A0=1;     or    A0_SET_BIT    out   (A0_GIO_DATA_REG),asUI_TransPage1:                    ld      a,(hl)    ld      (0x8001),a            inc     hl    djnz    sUI_TransPage1    retend

⌨️ 快捷键说明

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