close

10月3日在會場, 跟經銷商口頭上要了2種樣品, 5日就收到哈哈 HAPPY,實物如下照片,因為在新案子中會用到一個LOW PIN COUNT的MCU ,在當天會場裡,心裡就已決定要用66F30,所以回來後趕緊練習一下HOLTEK的開發環境,我手上只有一個E- WRITER PRO,不過還好66F是FLASH ROM 所以並不非常需要ICE,下面程序是第一次練習驅動7219 和大家分享 ,因為是第一次寫66F程序,應該還有很多不理想的地方,請大家多多指教




include HT66F50.inc


#define   Max7129_DIN  PD.4 ; // Serial-Data Input: rising edge
#define   Max7129_LOAD PD.5 ; // Load-Data Input: rising edge
#define   Max7129_CLK  PD.3 ; // Serial-Clock Input: maximum 10MHz


DATA_RAM  .SECTION AT 80H 'DATA'
 CNT       db  ?
        DATA_BYTE db  ?
        ADR       db  ?
        DAT       db  ?
        BUF_0     db  ?


  
;// max7129 part
DECODE_MODE   EQU  009H    ;// 解碼方式 
INTENSITY     EQU  00AH    ;// 顯示亮度 
SCAN_LIMIT    EQU  00BH    ;// 掃描位數
SHUT_DOWN     EQU  00CH    ;// 掉電模式
DISPLAY_TEST  EQU  00FH    ;// 顯示測試



cs .section 'code'
 org 00h
 jmp starts


 org 30h
starts:


        CLR PDC ; PORT D IS OUTPUT 


        CLR  TMPC0
        CLR  PA
       clr cp0c
       clr cp1c
       clr adcr1
       set adoff
       clr acerl  ;disbale ADC and CP, PA use for normal IO port
       set hlclk   ;set the Fsys = FH


        CALL  Max7219_Init
 
        MOV  A,01H
        MOV  ADR,A
        MOV  A,9fH  ;0
        MOV  DAT,A
        CALL Max7219_WriteData


        MOV  A,02H
        MOV  ADR,A
        MOV  A,03H  ;1
        MOV  DAT,A
        CALL Max7219_WriteData


        MOV  A,03H
        MOV  ADR,A
        MOV  A,3DH  ;2
        MOV  DAT,A
        CALL Max7219_WriteData


        MOV  A,04H
        MOV  ADR,A
        MOV  A,3BH  ;3
        MOV  DAT,A
        CALL Max7219_WriteData


        MOV  A,05H
        MOV  ADR,A
        MOV  A,0A3H ;4
        MOV  DAT,A
        CALL Max7219_WriteData


        MOV  A,06H
        MOV  ADR,A
        MOV  A,0BAH ;5
        MOV  DAT,A
        CALL Max7219_WriteData


        MOV  A,07H
        MOV  ADR,A
        MOV  A,0BEH ;6
        MOV  DAT,A
        CALL Max7219_WriteData


        MOV  A,08H
        MOV  ADR,A
        MOV  A,8BH ;7
        MOV  DAT,A
        CALL Max7219_WriteData


loop:
 
        jmp  loop  


Max7219_WriteByte:


        MOV  A,08H
        MOV  CNT,A
MAX_7219_LOOP:
        CLR  Max7129_CLK


        SZ   DATA_BYTE.7         ;Skip if bit i of Data Memory is zero   
        JMP  DIN_IS_HI
        CLR  Max7129_DIN
        JMP  NEXT_00
DIN_IS_HI:
        SET  Max7129_DIN
NEXT_00:


        RL   DATA_BYTE           ;Rotate Data Memory left
        SET  Max7129_CLK
        SDZ  CNT
        JMP  MAX_7219_LOOP
        RET


Max7219_WriteData:
        SET  Max7129_LOAD
        MOV  A,ADR
        MOV  DATA_BYTE,A
        CALL Max7219_WriteByte
        MOV  A,DAT
        MOV  DATA_BYTE,A
        CALL Max7219_WriteByte
        CLR  Max7129_LOAD
        SET  Max7129_LOAD
        RET


Max7219_Init:
        SET  Max7129_LOAD
        SET  Max7129_CLK


        MOV  A,SHUT_DOWN
        MOV  ADR,A
        MOV  A,01H
        MOV  DAT,A
        CALL Max7219_WriteData


        MOV  A,DISPLAY_TEST
        MOV  ADR,A
        MOV  A,00H
        MOV  DAT,A
        CALL Max7219_WriteData


        MOV  A,DECODE_MODE
        MOV  ADR,A
        MOV  A,00H
        MOV  DAT,A
        CALL Max7219_WriteData


        MOV  A,SCAN_LIMIT
        MOV  ADR,A
        MOV  A,07H
        MOV  DAT,A
        CALL Max7219_WriteData


        MOV  A,INTENSITY
        MOV  ADR,A
        MOV  A,07H
        MOV  DAT,A
        CALL Max7219_WriteData
        RET
 


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 tooru178 的頭像
    tooru178

    電子制作 DIY

    tooru178 發表在 痞客邦 留言(0) 人氣()