Download presentation
Presentation is loading. Please wait.
1
1 Timer with PFD
2
2 PFD 可程式除頻器 PAC.3=1 則 PA.3 被規劃為輸入模式 PAC.3=0 則 PA.3 被規劃為輸出模式 PA.3=1 即開始輸出 PFD 信號 產生的頻率為計時計數器溢位頻率之半 PA.3=0 即停止輸出 PFD 信號
3
3 ;PROGRAM : 4-10-1.ASM ;FUNCTION: GENERATE TONE DO~DO. BY PFD FUNCTION ;NOTE : USING TMR AS A 8-BIT TIMER ;MASK OPTION: ENABLE PA3 PROGRAMMABLE FREQUENCY DEVIDER #INCLUDEHT46R23.INC.CHIPHT46R23 ;-------------------------------------------------------------------- MY_DATA.SECTION'DATA' ;== DATA SECTION == DEL1 DB ? ;DELAY LOOP COUNT 1 DEL2 DB ? ;DELAY LOOP COUNT 2 DEL3DB ? ;DELAY LOOP COUNT 3 COUNTDB ? ;UNIVERSAL COUNTER KEYDB ? ;KEYCODE REGISTER
4
4 ;-------------------------------------------------------------------- OSCEQU4000000;fSYS=4 MHz KEY_PORTEQUPB;DEFINE KEYPAD PORT KEY_PORTC EQUPBC;DEFINE KEY PORT VONTROL REG. PFDCEQU PAC.3 MY_CODE.SECTION AT 0 'CODE' ;== PROGRAM SECTION == ORG 00H ;HT-46RXX RESET VECTOR MOVA,10000100B;CONFIG TMR 0 IN MODE ; 2(TIMER MODE) MOVTMRC,A;fINT=fSYS/16(4MHz/16). CLRPFDC;ENABLE PFD OUTPUT
5
5 MAIN: CALLREAD_KEY;SCAN KEY_PAD MOVA,KEY XORA,16 SZZ;IS ANY KEY PRESSED? JMPMAIN;NO, RE-READ MOVA,KEY;YES!
6
6 有按鍵按下時 CALLTRANS;GET CORESPONDING ; TIME CONSTANT MOV TMRL,A;LOAD PITCH TO ; TMR PE-LOAD REGISTER MOV A,0FFH MOV TMRH,A;PRELOAD TMRH=FFH ;FOR 8-BIT TMR SET TON;START TMR COUNTING
7
7 按鍵是否放開 WAIT_KEY_RELEASED: CALLREAD_KEY;SCAN KEY_PAD FOR KEY RELEASED MOVA,KEY XORA,16 SNZZ;IS KEY STILL PRESSED? JMPWAIT_KEY_RELEASED ;YES, WAIT KEY ; RELEASED MOVA,10;DELAY 0.1 SEC MOVDEL1,A CALLDELAY CLRTON;STOP TMR COUNTING(DISABLE ;PFD) JMPMAIN;RESTART.
8
8 ;******************************************************************** ; SCAN 4x4 MATRIX ON KEY PORT AND RETURN THE CODE IN KEY REGISTER ;IF NO KEY BEEN PRESSED, KEY=16. ;******************************************************************** READ_KEYPROC MOVA,11110000B MOVKEY_PORTC,A;CONFIG PORT B SETKEY_PORT;INITIAL PORT B CLRKEY;INITIAL KEY REGISTER MOVA,04 MOVCOUNT,A;SET ROW COUNTER CLR C;CLEAR CARRY FLAG
9
9 SCAN_KEY: RLCKEY_PORT;ROTATE SCANNING BIT SET C;MAKE SURE C=1 SNZ KEY_PORT.4;COLUMN 0 PRESSED? JMPEND_KEY;YES. INCKEY;NO, INCREASE KEY CODE. SNZ KEY_PORT.5;COLUMN 1 PRESSED? JMPEND_KEY;YES. INCKEY;NO, NCREASE KEY CODE.
10
10 SNZ KEY_PORT.6;COLUMN 2 PRESSED? JMPEND_KEY;YES. INCKEY;NO, INCREASE KEY CODE. SNZ KEY_PORT.7;COLUMN 3 PRESSED? JMPEND_KEY;YES. INCKEY;NO, INCREASE KEY CODE. SDZCOUNT;HAVE ALL ROWs BEEN ;CHECKED? JMPSCAN_KEY;NO, NEXT ROW. END_KEY: RET READ_KEY ENDP
11
11 ;******************************************************************** ; Delay about DEL1*10mS ;******************************************************************** DELAY PROC MOV A,30 MOV DEL2,A;SET DEL2 COUNTER DEL_2:MOVA,110 MOVDEL3,A;SET DEL3 COUNTER DEL_3: SDZ DEL3 ;DEL3 DOWN COUNT JMP DEL_3 SDZ DEL2 ;DEL2 DOWN COUNT JMP DEL_2 SDZDEL1;DEL1 DOWN COUNT JMPDELAY RET DELAYENDP
12
12 ;******************************************************************** ; RETURN THE TABLE VALUE INDEX BY A ;******************************************************************** TRANSPROC ADDMA,PCL;PITCH CONSTANT FOR fINT=fSYS/16 RETA,256-OSC/(523*2*16);DO TONE TIME CONSTANT (LO-BYTE) RETA,256-OSC/(587*2*16);RE TONE TIME CONSTANT (LO-BYTE) RETA,256-OSC/(659*2*16);MI TONE TIME CONSTANT (LO-BYTE) RETA,256-OSC/(698*2*16);FA TONE TIME CONSTANT (LO-BYTE) RETA,256-OSC/(785*2*16);SO TONE TIME CONSTANT (LO-BYTE) RETA,256-OSC/(880*2*16);LA TONE TIME CONSTANT (LO-BYTE) RETA,256-OSC/(998*2*16);TI TONE TIME CONSTANT (LO-BYTE) RETA,256-OSC/(523*2*16*2);DO. TONE TIME CONSTANT (LO-BYTE) RETA,256-OSC/(587*2*16*2);RE. TONE TIME CONSTANT (LO-BYTE) RETA,256-OSC/(659*2*16*2);ME. TONE TIME CONSTANT (LO-BYTE) RETA,256-OSC/(698*2*16*2);FA. TONE TIME CONSTANT (LO-BYTE) RETA,256-OSC/(785*2*16*2);SO. TONE TIME CONSTANT (LO-BYTE) RETA,256-OSC/(880*2*16*2);LA. TONE TIME CONSTANT (LO-BYTE) RETA,256-OSC/(998*2*16*2);TI. TONE TIME CONSTANT (LO-BYTE) RETA,256-OSC/(523*2*16*4);DO. TONE TIME CONSTANT (LO-BYTE) RETA,256-OSC/(587*2*16*4);RE. TONE TIME CONSTANT (LO-BYTE) END
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.