PAV-MP1 デジ像 車載アダプターの製作 webページにアップしました。
webページへのリンク
2010年10月3日日曜日
2010年9月26日日曜日
PAV-MP1車載用アダプタをつくる レジューム ENTERキー送信
電源ON時の「ジュームシしますか?」 の画面に対して「OK」するために自動でENTERを送信することにしました。私が使用しているUSBメモリーは非常に認識が遅いようで、念のため電源ONから約100秒後に送信することにしました。詳細はwebページに。・・・いずれ
;*******************************************
;**** PAV-MP1 enter code send ****
;*******************************************
ENTERSEND
MOVLW 040H ;SYSTEM CODE
MOVWF SDATA
CALL SEND8D
MOVLW 0BFH ;DEVICE CODE
MOVWF SDATA
CALL SEND8D
MOVLW 0D0H ;ENTER CODE
MOVWF SDATA
CALL SEND8D
MOVLW 02FH ;ENTER CODE
MOVWF SDATA
CALL SEND8D
CALL WAIT
RETURN
オシロスコープの波形は上の通りですな。
;*******************************************
;**** PAV-MP1 enter code send ****
;*******************************************
ENTERSEND
MOVLW 040H ;SYSTEM CODE
MOVWF SDATA
CALL SEND8D
MOVLW 0BFH ;DEVICE CODE
MOVWF SDATA
CALL SEND8D
MOVLW 0D0H ;ENTER CODE
MOVWF SDATA
CALL SEND8D
MOVLW 02FH ;ENTER CODE
MOVWF SDATA
CALL SEND8D
CALL WAIT
RETURN
オシロスコープの波形は上の通りですな。
2010年9月19日日曜日
PAV-MP1 レジューム用メモリーを2つにしてくれないかなぁ
苦労したけど、プリンストンさんがファームウェアを考えてくれたらこんな工作いらないんだけどなぁ。
レジューム用に再生か所をメモるのを1分くらいごとに二か所に交互にして、次の電源ON時は正常に書き込めている方のメモリー内容を使う~てことにすれば、片方のメモリー内容が強制電源OFFで壊れていても2分以内でのレジュームができると思うんだけどなぁ。
次のファームウェアに期待~アダプタで儲けられなくなるか(~_~)。って公開している時点で儲けられないかhihi。
でも、今回の工作で磨いた技術は地デジチューナープラステレビのリモコン操作に活用できるかな。
なんて考えています。
レジューム用に再生か所をメモるのを1分くらいごとに二か所に交互にして、次の電源ON時は正常に書き込めている方のメモリー内容を使う~てことにすれば、片方のメモリー内容が強制電源OFFで壊れていても2分以内でのレジュームができると思うんだけどなぁ。
それくらいはきっともうやっているか・・・片方消し始めたときに強制OFFで破壊・・・正常だと勘違いして読み込み カナ?
(2010.09.20書換)
次のファームウェアに期待~アダプタで儲けられなくなるか(~_~)。って公開している時点で儲けられないかhihi。
でも、今回の工作で磨いた技術は地デジチューナープラステレビのリモコン操作に活用できるかな。
なんて考えています。
PAV-MP1車載用アダプタをつくる PICのプログラム
PICのプログラムは次の通り。
ソース貼り付けますが、スペースやタブが代わっていてこのままコピーしてもMPLABを通らないかもしれません。そのうちwebページに載せたいと思います。
;******************************************************************:
; This program is installed in the RFID transimitter.
; 37.9kHz modulated IrDa for PAV-MP1.
; This program is installed in the PIC which drives with 4MHz clock.
;******************************************************************
;
LIST P=PIC16F84A
INCLUDE "P16F84A.INC"
__CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF
;*******************************************
; Define variables
;*******************************************
SDATA EQU 0CH ;Send data 2Byte
CNT1 EQU 0EH ;Counter
CNT2 EQU 0FH ;Counter
CNT3 EQU 10H ;Counter
CNT4 EQU 15H ;Counter
CNT5 EQU 16H ;Counter
BITCNT EQU 11H ;Bit counter
WCNT EQU 12H ;counter for 37.9kHz
W6CNT EQU 13H ;counter for 600usec
WORK EQU 14H ;work area
;*******************************************
; Jump vector
;*******************************************
ORG 0 ;reset
GOTO MAIN
; ORG 4 ;interrupt(not use)
; GOTO START
;*******************************************
; MAIN routine
;*******************************************
MAIN
BCF INTCON,GIE ;Inhibit interrupt
CALL PORT_INI ;initialize
;******* main program **********
START
BTFSC PORTB,4 ;ACC check (ACC 12V then RB3 0)
GOTO ACC_0V ;ACC=0V so goto POWER OFF
CALL WAIT5 ;ACC=12V wait 5 sec
BTFSC PORTB,4 ;ACC check (ACC 12V then RB3 0)
GOTO START ;ACC change while in work
CALL POWER_ON ;ACC=12V so goto POWER ON
BTFSC PORTB,4 ;ACC check (ACC 12V then RB3 0)
GOTO START ;ACC change while in work
GOTO SLEEP_R ;ACC=0V sleep and wait change
ACC_0V
CALL LEED
CALL STOPSEND ;ACC is OFF so stop PAV-MP1
CALL WAIT5 ;wait 5sec
CALL POWER_OFF ;POWER OFF
BTFSC PORTB,4 ;ACC check (ACC 12V then RB3 0)
GOTO SLEEP_R ;ACC=0V sleep and wait change
GOTO START ;ACC change while in work
;********** sleep ***************
SLEEP_R
BCF INTCON,0 ;RBIF クリア
; BCF INTCON,1 ;INTF クリア
BSF INTCON,3 ;Rb割り込み、RBIEをenable
; BSF INTCON,4 ;INT割り込み、RBIEをenable
SLEEP ;power down mode
LOOP BCF INTCON,7 ;GIE クリア
BTFSC INTCON,7
GOTO LOOP
BCF INTCON,3 ;Rb割り込み、RBIEをdisable
; BCF INTCON,4 ;INT割り込み、RBIEをdisable
GOTO START
;*******************************************
;************ Subroutines ****************
;*******************************************
;*******************************************
;**** send leed phase ****
;*******************************************
LEED
MOVLW 00FH ;reset bit counter
MOVWF BITCNT
LDLP
CALL BIT1 ;send 1 data
DECFSZ BITCNT,F ;test end
GOTO LDLP ;continue
MOVLW 007H ;reset bit counter
MOVWF BITCNT
LDLP2
CALL BIT0 ;send 1 data
DECFSZ BITCNT,F ;test end
GOTO LDLP2
CALL BIT1
RETURN
;*******************************************
;**** PAV-MP1 stop code send ****
;*******************************************
STOPSEND
MOVLW 040H ;SYSTEM CODE
MOVWF SDATA
CALL SEND8D
MOVLW 0BFH ;DEVICE CODE
MOVWF SDATA
CALL SEND8D
MOVLW 030H ;STOP CODE
MOVWF SDATA
CALL SEND8D
MOVLW 0CFH ;STOP~ CODE
MOVWF SDATA
CALL SEND8D
CALL WAIT
RETURN
;*******************************************
; Send 8data subroutine
;*******************************************
SEND8D
MOVLW 08H
MOVWF CNT4
SS1 BTFSC SDATA,7
GOTO SS2
CALL SEND0
GOTO SS3
SS2 CALL SEND1
SS3 RLF SDATA
DECFSZ CNT4
GOTO SS1
RETURN
;*******************************************
; Send data 0 subroutine
;*******************************************
SEND0
CALL BIT0
CALL BIT1
RETURN
;*******************************************
; Send data 1 subroutine
;*******************************************
SEND1
CALL BIT0
CALL BIT0
CALL BIT0
CALL BIT1
RETURN
;*******************************************
; Send BIT 0 subroutine
;*******************************************
BIT0
MOVLW 0CH ;output RA2,RA3 1
MOVWF PORTA
MOVLW 0CH ;get counter for 600usec
MOVWF W6CNT
BT01LP
MOVLW 0FH ;15 get for 37.9kHz
MOVWF WCNT
BT00LP
DECFSZ WCNT,F
GOTO BT00LP ;3*15-1+2=46
;***
NOP
DECFSZ W6CNT,F
GOTO BT01LP ;(46+4)*12-1+5=604USEC
RETURN
;*******************************************
; Send BIT 1 subroutine
; "1" :13usec "0":13usec = 37.9kHz
;*******************************************
BIT1
MOVLW 017H ;get counter for 600usec
MOVWF W6CNT
;**** low output for 37.9kHz ****
BTLOOP
MOVLW 000H ;set on data
MOVWF PORTA ;on LED
NOP
NOP
NOP
NOP
NOP ;during 13 step
NOP
NOP
NOP
NOP
NOP
NOP
;**** high output for 37.9kHz ****
MOVLW 0CH ;set port
MOVWF PORTA ;off LED
NOP
NOP
NOP
NOP
NOP
NOP ;during 13 step
NOP
NOP
MOVLW 07H ;set on data for next
;**** end test for 600usec ****
DECFSZ W6CNT,F
GOTO BTLOOP
RETURN ;26*23-1+4=601usec
;*******************************************
; 300msec timer subroutine
;*******************************************
WAIT
MOVLW 0AH ;10
MOVWF CNT3
WTLP3
MOVLW 063H ;99
MOVWF CNT2
WTLP2
MOVLW 064H ;100
MOVWF CNT1
WTLP1
DECFSZ CNT1,F
GOTO WTLP1 ;3*100-1+2=301usec
;**
DECFSZ CNT2,F
GOTO WTLP2 ;(301+3)*99-1+3=30098
;**
DECFSZ CNT3,F
GOTO WTLP3 ;(30098+3)*10-1+3=301msec
RETURN
;*******************************************
; 10sec timer subroutine
;*******************************************
WAIT5
MOVLW 01EH ;33
MOVWF CNT5
WTLP5 CALL WAIT ;300msec
DECFSZ CNT5,F
GOTO WTLP5
RETURN
;*******************************************
; POWER control subroutine
;*******************************************
POWER_ON
MOVLW 0FCH
ANDWF PORTA,1 ;POWER ON (L = FET ON)
RETURN
POWER_OFF
MOVLW 003H
IORWF PORTA,1 ;POWER OFF (H = FET OFF)
RETURN
;*******************************************
; PORT initial setup subroutine
; PORTA: all output
; RA0,RA1 main Power ON/OFF
; RA2,RA3 drive LED
; PORTB: all input
; RB4 ACC input wakeup
;*******************************************
PORT_INI
BSF STATUS,RP0 ;Set page 1
MOVLW 0FFH ;all PORTB is input
MOVWF TRISB ;PortB set all input
CLRF TRISA ;PortA set all output
BCF OPTION_REG,7 ;PORTB pull up enable
BCF STATUS,RP0 ;Set Page 0
MOVLW 00CH ;OUTPUT 0CH
MOVWF PORTA ;LED OFF,Main Power ON
RETURN
;*******************************************
; Program END
;*******************************************
END
ソース貼り付けますが、スペースやタブが代わっていてこのままコピーしてもMPLABを通らないかもしれません。そのうちwebページに載せたいと思います。
;******************************************************************:
; This program is installed in the RFID transimitter.
; 37.9kHz modulated IrDa for PAV-MP1.
; This program is installed in the PIC which drives with 4MHz clock.
;******************************************************************
;
LIST P=PIC16F84A
INCLUDE "P16F84A.INC"
__CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF
;*******************************************
; Define variables
;*******************************************
SDATA EQU 0CH ;Send data 2Byte
CNT1 EQU 0EH ;Counter
CNT2 EQU 0FH ;Counter
CNT3 EQU 10H ;Counter
CNT4 EQU 15H ;Counter
CNT5 EQU 16H ;Counter
BITCNT EQU 11H ;Bit counter
WCNT EQU 12H ;counter for 37.9kHz
W6CNT EQU 13H ;counter for 600usec
WORK EQU 14H ;work area
;*******************************************
; Jump vector
;*******************************************
ORG 0 ;reset
GOTO MAIN
; ORG 4 ;interrupt(not use)
; GOTO START
;*******************************************
; MAIN routine
;*******************************************
MAIN
BCF INTCON,GIE ;Inhibit interrupt
CALL PORT_INI ;initialize
;******* main program **********
START
BTFSC PORTB,4 ;ACC check (ACC 12V then RB3 0)
GOTO ACC_0V ;ACC=0V so goto POWER OFF
CALL WAIT5 ;ACC=12V wait 5 sec
BTFSC PORTB,4 ;ACC check (ACC 12V then RB3 0)
GOTO START ;ACC change while in work
CALL POWER_ON ;ACC=12V so goto POWER ON
BTFSC PORTB,4 ;ACC check (ACC 12V then RB3 0)
GOTO START ;ACC change while in work
GOTO SLEEP_R ;ACC=0V sleep and wait change
ACC_0V
CALL LEED
CALL STOPSEND ;ACC is OFF so stop PAV-MP1
CALL WAIT5 ;wait 5sec
CALL POWER_OFF ;POWER OFF
BTFSC PORTB,4 ;ACC check (ACC 12V then RB3 0)
GOTO SLEEP_R ;ACC=0V sleep and wait change
GOTO START ;ACC change while in work
;********** sleep ***************
SLEEP_R
BCF INTCON,0 ;RBIF クリア
; BCF INTCON,1 ;INTF クリア
BSF INTCON,3 ;Rb割り込み、RBIEをenable
; BSF INTCON,4 ;INT割り込み、RBIEをenable
SLEEP ;power down mode
LOOP BCF INTCON,7 ;GIE クリア
BTFSC INTCON,7
GOTO LOOP
BCF INTCON,3 ;Rb割り込み、RBIEをdisable
; BCF INTCON,4 ;INT割り込み、RBIEをdisable
GOTO START
;*******************************************
;************ Subroutines ****************
;*******************************************
;*******************************************
;**** send leed phase ****
;*******************************************
LEED
MOVLW 00FH ;reset bit counter
MOVWF BITCNT
LDLP
CALL BIT1 ;send 1 data
DECFSZ BITCNT,F ;test end
GOTO LDLP ;continue
MOVLW 007H ;reset bit counter
MOVWF BITCNT
LDLP2
CALL BIT0 ;send 1 data
DECFSZ BITCNT,F ;test end
GOTO LDLP2
CALL BIT1
RETURN
;*******************************************
;**** PAV-MP1 stop code send ****
;*******************************************
STOPSEND
MOVLW 040H ;SYSTEM CODE
MOVWF SDATA
CALL SEND8D
MOVLW 0BFH ;DEVICE CODE
MOVWF SDATA
CALL SEND8D
MOVLW 030H ;STOP CODE
MOVWF SDATA
CALL SEND8D
MOVLW 0CFH ;STOP~ CODE
MOVWF SDATA
CALL SEND8D
CALL WAIT
RETURN
;*******************************************
; Send 8data subroutine
;*******************************************
SEND8D
MOVLW 08H
MOVWF CNT4
SS1 BTFSC SDATA,7
GOTO SS2
CALL SEND0
GOTO SS3
SS2 CALL SEND1
SS3 RLF SDATA
DECFSZ CNT4
GOTO SS1
RETURN
;*******************************************
; Send data 0 subroutine
;*******************************************
SEND0
CALL BIT0
CALL BIT1
RETURN
;*******************************************
; Send data 1 subroutine
;*******************************************
SEND1
CALL BIT0
CALL BIT0
CALL BIT0
CALL BIT1
RETURN
;*******************************************
; Send BIT 0 subroutine
;*******************************************
BIT0
MOVLW 0CH ;output RA2,RA3 1
MOVWF PORTA
MOVLW 0CH ;get counter for 600usec
MOVWF W6CNT
BT01LP
MOVLW 0FH ;15 get for 37.9kHz
MOVWF WCNT
BT00LP
DECFSZ WCNT,F
GOTO BT00LP ;3*15-1+2=46
;***
NOP
DECFSZ W6CNT,F
GOTO BT01LP ;(46+4)*12-1+5=604USEC
RETURN
;*******************************************
; Send BIT 1 subroutine
; "1" :13usec "0":13usec = 37.9kHz
;*******************************************
BIT1
MOVLW 017H ;get counter for 600usec
MOVWF W6CNT
;**** low output for 37.9kHz ****
BTLOOP
MOVLW 000H ;set on data
MOVWF PORTA ;on LED
NOP
NOP
NOP
NOP
NOP ;during 13 step
NOP
NOP
NOP
NOP
NOP
NOP
;**** high output for 37.9kHz ****
MOVLW 0CH ;set port
MOVWF PORTA ;off LED
NOP
NOP
NOP
NOP
NOP
NOP ;during 13 step
NOP
NOP
MOVLW 07H ;set on data for next
;**** end test for 600usec ****
DECFSZ W6CNT,F
GOTO BTLOOP
RETURN ;26*23-1+4=601usec
;*******************************************
; 300msec timer subroutine
;*******************************************
WAIT
MOVLW 0AH ;10
MOVWF CNT3
WTLP3
MOVLW 063H ;99
MOVWF CNT2
WTLP2
MOVLW 064H ;100
MOVWF CNT1
WTLP1
DECFSZ CNT1,F
GOTO WTLP1 ;3*100-1+2=301usec
;**
DECFSZ CNT2,F
GOTO WTLP2 ;(301+3)*99-1+3=30098
;**
DECFSZ CNT3,F
GOTO WTLP3 ;(30098+3)*10-1+3=301msec
RETURN
;*******************************************
; 10sec timer subroutine
;*******************************************
WAIT5
MOVLW 01EH ;33
MOVWF CNT5
WTLP5 CALL WAIT ;300msec
DECFSZ CNT5,F
GOTO WTLP5
RETURN
;*******************************************
; POWER control subroutine
;*******************************************
POWER_ON
MOVLW 0FCH
ANDWF PORTA,1 ;POWER ON (L = FET ON)
RETURN
POWER_OFF
MOVLW 003H
IORWF PORTA,1 ;POWER OFF (H = FET OFF)
RETURN
;*******************************************
; PORT initial setup subroutine
; PORTA: all output
; RA0,RA1 main Power ON/OFF
; RA2,RA3 drive LED
; PORTB: all input
; RB4 ACC input wakeup
;*******************************************
PORT_INI
BSF STATUS,RP0 ;Set page 1
MOVLW 0FFH ;all PORTB is input
MOVWF TRISB ;PortB set all input
CLRF TRISA ;PortA set all output
BCF OPTION_REG,7 ;PORTB pull up enable
BCF STATUS,RP0 ;Set Page 0
MOVLW 00CH ;OUTPUT 0CH
MOVWF PORTA ;LED OFF,Main Power ON
RETURN
;*******************************************
; Program END
;*******************************************
END
2010年9月18日土曜日
PAV-MP1車載用アダプタをつくる 完成
2010年9月16日木曜日
PAV-MP1車載用アダプタをつくる 車載で問題発生
2010年9月14日火曜日
2010年9月13日月曜日
2010年9月4日土曜日
2010年8月29日日曜日
PAV-MP1再生停止の赤外線信号をつくる
上が付属リモコンの再生停止ボタンの信号。
下が本日の成果。
何とか停止させることができしました。
あとはACC電源をモニタして主電源を遅延してOFFする部分を作らないといけないな。
試行錯誤で疲れました。
またそのうちに続きをやります。
誰か、まともなハードとソフトを作ってくれないかなぁ・・・・。
て、イウかプリンストンさん、なんとかしてよ~。
参考にしたというか、ソースの主要部分をいただきました。
http://www.picfun.com/equipj31.html
ありがとうございます。
とりあえずの汚いソースメモ。
;******************************************************************:
; This program is installed in the RFID transimitter.
; 37.9kHz modulated IrDa
; This program is installed in the PIC which drives with 4MHz clock.
;******************************************************************
;
LIST P=PIC16F84A
INCLUDE "P16F84A.INC"
;*******************************************
; Define variables
;*******************************************
SDATA EQU 0CH ;Send data
CNT1 EQU 0EH ;Counter
CNT2 EQU 0FH ;Counter
CNT3 EQU 10H ;Counter
BITCNT EQU 11H ;Bit counter
WCNT EQU 12H ;counter for 37.9kHz
W6CNT EQU 13H ;counter for 600usec
WORK EQU 14H ;work area
;*******************************************
; Jump vector
;*******************************************
ORG 0 ;reset
GOTO MAIN
ORG 4 ;interrupt(not use)
GOTO MAIN
ORG 8
;*******************************************
; MAIN routine
;*******************************************
MAIN
BCF INTCON,GIE ;Inhibit interrupt
CALL PORT_INI ;initialize
;******* main loop **********
LOOP
CALL SCAN ;key scan and return key code
CALL LEED ;send leed phase
CALL SEND ;send data
CALL SEND ;send same data twice
CALL WAIT ;300MSEC timer start
GOTO LOOP ;endless loop
;*******************************************
;************ Subroutines ****************
;*******************************************
;*******************************************
;**** send leed phase ****
;*******************************************
LEED
MOVLW 10 ;reset bit counter
MOVWF BITCNT
LDLP
CALL BIT1 ;send 1 data
DECFSZ BITCNT,F ;test end
GOTO LDLP ;continue
MOVLW 7 ;reset bit counter
MOVWF BITCNT
LDLP2
CALL BIT0 ;send 1 data
DECFSZ BITCNT,F ;test end
GOTO LDLP2
CALL BIT1
RETURN
;*******************************************
;**** send data PAV-MP1 stop ****
;*******************************************
SEND
CALL SEND0
CALL SEND1
CALL SEND0
CALL SEND0
CALL SEND0
CALL SEND0
CALL SEND0
CALL SEND0
CALL SEND1
CALL SEND0
CALL SEND1
CALL SEND1
CALL SEND1
CALL SEND1
CALL SEND1
CALL SEND1
CALL SEND0
CALL SEND0
CALL SEND1
CALL SEND1
CALL SEND0
CALL SEND0
CALL SEND0
CALL SEND0
CALL SEND1
CALL SEND1
CALL SEND0
CALL SEND0
CALL SEND1
CALL SEND1
CALL SEND1
CALL SEND1
CALL WAIT
RETURN
;*******************************************
; Send data 0 subroutine
;*******************************************
SEND0
CALL BIT0
CALL BIT1
RETURN
;*******************************************
; Send data 1 subroutine
;*******************************************
SEND1
CALL BIT0
CALL BIT0
CALL BIT0
CALL BIT1
RETURN
;*******************************************
; Send BIT 0 subroutine
;*******************************************
BIT0
MOVLW 01FH ;output all 1
MOVWF PORTA
MOVLW 0CH ;get counter for 600usec
MOVWF W6CNT
BT01LP
MOVLW 0FH ;15 get for 37.9kHz
MOVWF WCNT
BT00LP
DECFSZ WCNT,F
GOTO BT00LP ;3*15-1+2=46
;***
NOP
DECFSZ W6CNT,F
GOTO BT01LP ;(46+4)*12-1+5=604USEC
RETURN
;*******************************************
; Send BIT 1 subroutine
; "1" :13usec "0":13usec = 37.9kHz
;*******************************************
BIT1
MOVLW 017H ;get counter for 600usec
MOVWF W6CNT
MOVLW 07H ;set on data
;**** low output for 37.9kHz ****
BTLOOP
MOVWF PORTA ;on LED
NOP
NOP
NOP
NOP
NOP ;during 13 step
NOP
NOP
NOP
NOP
NOP
NOP
;**** high output for 37.9kHz ****
MOVLW 01FH ;set port
MOVWF PORTA ;off LED
NOP
NOP
NOP
NOP
NOP
NOP ;during 13 step
NOP
NOP
MOVLW 07H ;set on data for next
;**** end test for 600usec ****
DECFSZ W6CNT,F
GOTO BTLOOP
RETURN ;26*23-1+4=601usec
;*******************************************
; Dynamic key scan subroutine
;*******************************************
SCAN
MOVF PORTB,W ;input PORTB
MOVWF WORK ;temp
COMF WORK,F ;complement
MOVF WORK,W ;set Z flag
BSF PORTA,0 ;reset
BTFSS STATUS,Z ;if data is none
GOTO EXIST ;exist key input
GOTO SCAN ;loop next scan
;******* fined key,convert to key code ********
EXIST
RETURN ;exit to main
;*******************************************
; 300msec timer subroutine
;*******************************************
WAIT
MOVLW 0AH ;10
MOVWF CNT3
WTLP3
MOVLW 063H ;99
MOVWF CNT2
WTLP2
MOVLW 064H ;100
MOVWF CNT1
WTLP1
DECFSZ CNT1,F
GOTO WTLP1 ;3*100-1+2=301usec
;**
DECFSZ CNT2,F
GOTO WTLP2 ;(301+3)*99-1+3=30098
;**
DECFSZ CNT3,F
GOTO WTLP3 ;(30098+3)*10-1+3=301msec
RETURN
;*******************************************
; PORT initial setup subroutine
; PORTA: all output
; RA3,RA4 drive LED
; RA0TORA2 used for dynamic key scan
; PORTB: all input(key input)
;*******************************************
PORT_INI
BSF STATUS,RP0 ;Set page 1
MOVLW 0FFH ;all PORTB is input
MOVWF TRISB ;PortB set all input
CLRF TRISA ;PortA set all output
BCF OPTION_REG,7 ;PORTB pull up enable
BCF STATUS,RP0 ;Set Page 0
MOVLW 01FH ;output all 1
MOVWF PORTA ;Off LED
RETURN
END
登録:
投稿 (Atom)



