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

📄 46r47_1606_led.asm

📁 一个用HT46R47驱动HL1606控制的LED软灯条程序
💻 ASM
📖 第 1 页 / 共 3 页
字号:
;*****************************************************************;
;---> Project : (段工)跑马灯控制程序                          <---;
;---> P List  : HT46R47                                       <---;
;---> Rom Size: xxxxh                                         <---;                                          
;---> End Date: 2009-03-17                                    <---;                                          
;---> Function:                                               <---;
;--->          1. PA.567 控制3个灯                            <---; 
;--->          2. PB.0123接收RF信号                           <---; 
;--->          3. PA.34接AT24C01                              <---;
;--->          4. PA.0驱动RF指示灯                            <---;
;--->          5. 用4MHz晶体振荡                              <---;
;*****************************************************************;



include ht46R47.inc



;-----------------------------------------------;
Data      .section      'data'  ;64 * 8 bits RAM; 40h ~ 7fh 
;-----------------------------------------------;
R_status       db       ?      ;40
R_ACC          db       ?      ;41
R_80us         db       ?      ;
R_Key          db       ?
;----------------------------------------------;
;----------------------------------------------;
;scl           equ     pa.3    ;24C08-6 定义pa.3为时钟脚
;sclc          equ     pac.3   ;
;sda           equ     pa.4    ;24C08-5 定义pa.4为数据脚
;sdac          equ     pac.4   ;  
;-----------------------------------------;
;write_in      db      ?      ;写入数据暂存器
;word_addr     db      ?      ;读写地址暂存器
;data_8	       db      ?      ;8bit计数
;RAM_count     db      ?      ; 
;----------------------------------------------;
Flag           db       ?
;-------------------------------------;
FangXiang     equ     Flag.0
fg_Li         equ     Flag.1





;----------------------------------------------;
    B_SI      equ     PA.4                 
    B_DI      equ     PA.5                 
    B_CI      equ     PA.6      
    B_LI      equ     PA.7
;----------------------------------------------;

R_RegM         db       ?
R_RegK         db       ?
R_RegJ         db       ?
R_RegS         db       ?
R_RegB         db       ?

Rt_Data        db       ?
Rt_count       db       ?

R_500ms        db       ?

;----------------------------------------------;
;----------------------------------------------;
count1         db       ?
count2         db       ?
count3         db       ?

;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++;
;**********************************************************************;
code      .section     at 0 'code'        ; 1024 * 14bits ROM
;----------------------------------------------------------------------;
                     
                      ORG      00h             ;
	              JMP      MAIN_Start      ;RESET   
	              ORG      04H             ;
	              JMP      Ext_Int_RXD     ;External INT
	              ORG      08H	       ;		  
	              JMP      Timer_Int       ;TIMER INT
	              ORG      0CH             ;			 
	              JMP      AD_Int	       ;A/D convert INT
	              NOP                      ; 
	              NOP                      ;
	              JMP      MAIN_Start      ;
Ext_Int_RXD:
AD_Int:
                      NOP                      ;
                      reti                     ;

;---------------------------------------------------------------;
;--------------->>    80us timer interrupt    <<----------------;
;---------------------------------------------------------------;
Timer_int:                                 
                      mov      R_ACC,A
                      mov      A,status
                      mov      R_status,A
;-------------------------------------------------------;
                      clr      wdt
                      inc      R_80us 
                      mov      A,R_80us
                      sub      A,250
                      snz      c
                      jmp      Exit_timer
                      clr      R_80us
                      inc      R_500ms
           
;-------------------------------------------------------;
;-------------------------------------------------------;
Exit_timer:                      
                      mov      A,R_status      ;
                      mov      status,A        ;
                      mov      A,R_ACC         ; 
                      reti     
;----------------------------------------------------------------------;
;**********************************************************************;


;**********************************************************************;
;**********************************************************************;
;**********************************************************************;
;**********************************************************************;
;----------------------------------------------------------------------;
MAIN_Start:
                      clr      intc            ; 
                      clr      tmr             ;
                      clr      tmrc            ;
                      clr      wdt             ;
                 
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++;
;********>           no nomral reset           <********;
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++;
JI_NO_normal_reset:                      
                     ;mov      A,[7eh]
                     ;xor      A,0aah
                     ;snz      Z
                      jmp      J_initial_data
                      mov      A,[7fh]
                      xor      A,55h
                      snz      z
                      jmp      J_initial_data
;-------------------------------------------------;                 
                      mov      A,00h           ;PA output
                      mov      PAC,A           ;

                      mov      A,00h           ;
                      mov      PBC,A           ;
                      mov      PB,A            ;PB input 
                  
                      clr      PD              ;
                      clr      PDC             ;PD output      
                      clr      PD              ;
;-------------------------------------------------;                 
                      mov      a,6             ;(256-6=250)
                      mov      tmr,a           ;timer counting initial value=0ebh
                      mov      A,10000101B     ;F=Fsys/32 (4MHz/32=1/8MHz=8us)
                      mov      tmrc,A          ;250*8us=2000us=2ms                     
                      mov      A,00000101B     ;enable all interrupt and open 
                      mov      intc,A          ;timer interrupt  
                    
                      set      tmrc.4          ;
                      clr      R_80us          ;
                    
                      jmp      Main_prog       ;
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++;
;*****>        initial  all data register         <*****;
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++;
J_initial_data:
                      mov      A,00h           ;PA output
                      mov      PAC,A           ;
                      mov      A,00h           ;
                      mov      PA,A            ;
          
                      mov      A,00h           ;
                      mov      PBC,A           ;
                      mov      PB,A            ;PB output 
                  
                      clr      PD              ;
                      clr      PDC             ;PD output      
                      clr      PD              ;
;-------------------------------------------------;                 
;------->>      timer initial setup      <<-------;
;-------------------------------------------------;    
             
                      mov      a,6             ;(256-6=250)
                      mov      tmr,a           ;timer counting initial value=0ebh
                      mov      A,10000101B     ;F=Fsys/32 (4MHz/32=1/8MHz=8us)
                      mov      tmrc,A          ;250*8us=2000us=2ms                     
                      mov      A,00000101B     ;enable all interrupt and open 
                      mov      intc,A          ;timer interrupt  
;-------------------------------------------------;    
                      mov      A,40h           ;清内存(40h ~ 7fh) 
                      mov      mp0,A           ; 
RAM_clr_Loop:                              
                      CLR      WDT             ;
                      mov      A,0             ;
                      mov      r0,A            ;  
                      inc      mp0             ;
                      mov      A,mp0
                      sub      A,80h           ;check 40h
                      snz      z               ;
                      jmp      RAM_clr_Loop    ; 
;-------------------------------------------------;    
;-------------------------------------------------;
                      mov      A,0aah
                      mov      [7eh],A
                      mov      A,55h
                      mov      [7fh],A
                      
                      set      tmrc.4          ;
              
;######################################################################;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++;
;--------------->>         HL1606 多模式程序        <<-----------------;
;======================================================================;
Main_prog:                      
                      mov     A,R_500ms
                      sub     A,10
                      snz     c
                      jmp     Main_RED
                      mov     A,R_500ms
                      sub     A,20
                      snz     c
                      jmp     Main_Green
                      mov     A,R_500ms
                      sub     A,30
                      snz     c
                      jmp     Main_Blue
                      mov     A,R_500ms
                      sub     A,120
                      snz     c
                      jmp     Main_White
                      clr     R_500ms
                      jmp     Main_prog
Main_RED:
                      clr     fg_Li
                      mov     A,84h

⌨️ 快捷键说明

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