📄 hdwinit.asm
字号:
NAME HDWINIT
;********************************************************
;* *
;* remocon of massage machine *
;* *
;* *
;********************************************************
; HarDWaer Initialize process *
;********************************************************
;
; UPDATE
;*** CPU TYPE ***
ICE EQU 0 ; 0:FLASH & NORMAL
;;;ICE EQU 1 ; 1:ICE
;*** equ ***
STOP_MODE EQU 32H ;
;*** PUBLIC & EXTRN ***
PUBLIC _hdwinit ;
PUBLIC _WDLP ;
extrn _start_mem1 ;
extrn _start_mem2
extrn _end_mem ;
extrn _G1_g2_init ;
extrn _Timer6_init
extrn _Macro_interrupt_init
extrn _Sio1_3wire_init
extrn _Timer2_init
extrn _Delay_200ms
CSEG
;********************************************************
; HarDWaer INITialaze PROCESS *
;********************************************************
_hdwinit:
MOV PU3 , #11111111Y
MOV PU2 , #00000000Y
MOV P2 , #00001000Y ; SET OK
MOV PM2 , #10100000Y ;ONLINE MODIFY/SET OK
MOV P3 , #00000000Y ;
MOV PM3 , #10000000Y ;
; *** CLOCK SET ***
MOV CC , #80h ;SET ENM
MOV STBC , #00h ;CPU CLOCK = fxx
MOV OSTS , #00 ;
NOP
;;d_d_send_data clear ;;
MOVG TDE , #_start_mem1 ;
MOVG WHL , #_start_mem2 ;
RAM_LOOP1:
MOV A , #00H ;
MOV [TDE+] , A ;
CMPW DE , HL ;
BC $RAM_LOOP1 ;
CALL _G1_g2_init ;
CALL _Timer6_init
CALL _Macro_interrupt_init
CALL _Sio1_3wire_init
CALL _Timer2_init;
EI
CALL _Delay_200ms;
DI ;
MOV PUO , #01110000Y ;PORT 4 5 6 PULL UP OK
MOV PU0 , #01000000Y ;NO Pull Up/SET OK
;; MOV PU2 , #00000000Y ;N0 PULL UP/SET OK
;; MOV PU3 , #11111111Y ;PULL UP /SET OK
MOV PU7 , #00000000Y ;NO PULL UP /SET OK
MOV PU8 , #11111111Y ; PORT 8 PULL UP SET OK
MOV PU10 , #00001111Y ;P102 Pull Up SET OK
MOV PU12 , #11111111Y ;SET OK
;*** PORT 0 SET OK ***
MOV P0 , #00000000Y ;SET OK
MOV PM0 , #11001000Y ;
;*** PORT 2 SET OK ***
;; MOV P2 , #00000000Y ; SET OK
;; MOV PM2 , #10100000Y ;ONLINE MODIFY/SET OK
;*** PORT 3 SET OK ***
; MOV P3 , #00000000Y ;
; MOV PM3 , #10000000Y ;
;*** PORT 4 SET OK ***
MOV P4 , #00000000Y ;
MOV PM4 , #11111111Y ;INPUT
;*** PORT 5 SET OK ***
MOV P5 , #00000000Y ;
MOV PM5 , #00000000Y ;
;*** PORT 6 SET OK ***
MOV P6 , #00000000Y ;
MOV PM6 , #00000000Y ;
;*** PORT 7 SET OK ***
MOV P7 , #00000000Y ;
MOV PM7 , #11111001Y ;
;*** PORT 8 SET OK ***
MOV P8 , #00000000Y ;
MOV PM8 , #00000000Y ;
;*** PORT 9 SET OK ***
MOV P9 , #00111111Y ;
MOV PM9 , #11000000Y ;
;*** PORT 10 SET OK
MOV P10 , #00000000Y ;
MOV PM10 , #11111111Y ;
;*** PORT 12 SET OK ***
MOV P12 , #00000000Y ;
MOV PM12 , #11111111Y ;
;PORT 13 SET OK ***
MOV P13 , #00000000Y ;
MOV PM13 , #11111101Y ;SOUND OUT PUT/ D/A
;*** edgi triger set ok **
;*** disable port 0 interrupt ***
mov EGP0 , #00000000b ;
mov EGN0 , #00000000b ;
;*** PCL clock out set ***
; clr1 CKS.4 ;pcl no output
;*** MEMORY MANAGEMENT ***
; MOV EBTS , #00000001b ;sepalate bus mode
; MOV MM , #10101001b ;1MB MODE
;$_IF(ICE)
;*** access wait for ice
; MOV PWC1 , #0A8h ;internal memory wait disable
; MOVW PWC2 , #0AAAAh ;external memory wait enable
;$ELSE
;*** access wait for flash & cpu
; MOV PWC1 , #02h ;WAIT enable
;$ENDIF
;*** ram clear ***
MOVG TDE , #_start_mem2 ;
MOVG WHL , #_end_mem ;
RAM_LOOP:
MOV A , #00H ;
MOV [TDE+] , A ;
CMPW DE , HL ;
BC $RAM_LOOP ;
RET
;********************************************************
; Watch Dog Loop Process *
;********************************************************
;
;
;
_WDLP:
MOVW MK0 , #0FFFFH ;
MOVW MK1 , #0FFFFH
MOV PUO , #01110000Y ;PORT 4 5 6 PULL UP OK
MOV PU0 , #00000000Y ;NO Pull Up/SET OK
MOV PU2 , #00000000Y ;N0 PULL UP/SET OK
MOV PU3 , #11111111Y ;PULL UP /SET OK
MOV PU7 , #00000000Y ;NO PULL UP /SET OK
MOV PU8 , #11111111Y ; PORT 8 PULL UP SET OK
MOV PU10 , #00001111Y ;P102 Pull Up SET OK
MOV PU12 , #11111111Y ;SET OK
;*** PORT 0 SET OK ***
MOV P0 , #00000000Y ;SET OK
MOV PM0 , #10001000Y ;
;*** PORT 2 SET OK ***
MOV P2 , #00000000Y ; SET OK
MOV PM2 , #10100000Y ;ONLINE MODIFY/SET OK
;*** PORT 3 SET OK ***
MOV P3 , #00000000Y ;
MOV PM3 , #10000000Y ;
;*** PORT 4 SET OK ***
MOV P4 , #00000000Y ;
MOV PM4 , #11111111Y ;INPUT
;*** PORT 5 SET OK ***
MOV P5 , #00000000Y ;
MOV PM5 , #00000000Y ;
;*** PORT 6 SET OK ***
MOV P6 , #00000000Y ;
MOV PM6 , #00000000Y ;
;*** PORT 7 SET OK ***
MOV P7 , #00000000Y ;
MOV PM7 , #11111001Y ;
;*** PORT 8 SET OK ***
MOV P8 , #00000000Y ;
MOV PM8 , #00000000Y ;
;*** PORT 9 SET OK ***
MOV P9 , #00111111Y ;
MOV PM9 , #11000000Y ;
;*** PORT 10 SET OK
MOV P10 , #00000000Y ;
MOV PM10 , #11111111Y ;
;*** PORT 12 SET OK ***
MOV P12 , #00000000Y ;
MOV PM12 , #11111111Y ;
;PORT 13 SET OK ***
MOV P13 , #00000000Y ;
MOV PM13 , #11111101Y ;SOUND OUT PUT/ D/A
; *** CLOCK SET ***
MOV CC , #80h ;SET ENMP
NOP ;
NOP ;
MOV STBC , #00h ;CPU CLOCK = fxx
NOP ;
NOP ;
MOV OSTS , #00 ;
NOP ;
NOP ;
;*** edgi triger set ok **
;*** disable port 0 interrupt ***
mov EGP0 , #00000000b ;
mov EGN0 , #00000000b ;
;*** STOP MODE ***
MOV STBC , #STOP_MODE ; STOP MODE
NOP ;
NOP ;
NOP ;
BR _WDLP ;
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -