Download presentation
Presentation is loading. Please wait.
Published byBrooke Bridges Modified over 9 years ago
1
1 4-8 IO_speaker 利用 HT66F50 中 PC4 腳位輸出特 性 控制 speaker 發聲
2
2 喇叭發聲原理 利用喇叭上的線圈通上電流造成薄膜振動 振動推動空氣產生聲音
3
3 LA 之頻率為 440KHz 每隔半音頻率增加為 1.059 倍 DO RE MI FA SOL LA TI DO’ TI=440KHz * 1.059 * 1.059 =493.9 Hz DO’= TI=440KHz * 1.059 * 1.059 * 1.059 =523Hz
4
4 音階頻率週期 (ms) 半週期 (ms) DO5231.910.96 DO’5541.80.9 RE5871.70.85 RE’6221.60.8 MI6591.520.76 FA6981.430.72 FA’7401.350.68 SOL7851.270.64
5
5 方波每一週期有 HIGH LOW 各一半
6
6 ;PROGRAM : 4-8.ASM ;FUNCTION: Generate Tone Do~Do PC4 I/O pin #INCLUDEHT66F50.INC ;-------------------------------------------------------------------- MY_DATA.SECTION'DATA' ;== DATA SECTION == DEL1 DB ? PITCH DB ? COUNT1 DB ? COUNT2 DB ? ;-------------------------------------------------------------------- SPK_PORT EQU PC.4 ;define speak port SPK_PORTC EQU PCC.4 MY_CODE.SECTION AT 0 'CODE' ;== PROGRAM SECTION == ORG 00H ;HT-66F50 RESET VECTOR CLEAR SPK_PORTC;PCC.4=0
7
7 MAIN: MOVE A,TAB_PITCH_DURATION MOVE TBLP,A ;Initial table pointer NEXT_PITCH: TABRDL PITCH ;Load Pitch/Duration to Pitch/TBLH CLEAR ACC XOR A,TBLH ; TBLH, read only SZ Z ; Is last tone JMP MAIN ;yes, restart MOV COUNT1,A ;No, load Duration to Count1 INC TBLP LOOP: MOVE A,10 MOVE COUNT2,A ;inner loop count
8
8 HI: SET SPK_PORT ;Set SPK_PORT High MOVE A,PITCH CALL DELAY ;Pitch delay CLR SPK_PORT ;Reset SPK_PORT Low MOVE A,PITCH CALL DELAY ;Pitch delay SDZ COUNT2 ;inner loop ok JUMP HI ;NO. SDZ CONUT1 ;Outer loop ok JMP LOOP ;No. JMP NEXT_PITCH ;yes, next pitch
9
9 ACC*10us,(ACC*9+1) cycles DELAYPROC MOVDEL1,A;SET DEL1 COUNTER DEL_1: TABRDL ACC TABRDL ACC SDZDEL1 ;DEL1 DOWN COUNT JMPDEL_1 RET DELAYENDP ORG LASTPAGE
10
10 TAB_PITCH_DURATION: DC 1000000/(523*2*10)+(523)/(2*10))SHL 8 ;Do tone & Duration DC 1000000/(587*2*10)+(587)/(2*10))SHL 8 ;Re tone & Duration DC 1000000/(659*2*10)+(659)/(2*10))SHL 8 ;MI tone & Duration DC 1000000/(698*2*10)+(698)/(2*10))SHL 8 ;FA tone & Duration DC 1000000/(785*2*10)+(785)/(2*10))SHL 8 ;SoL tone & Duration DC 1000000/(880*2*10)+(880)/(2*10))SHL 8 ;LA tone & Duration DC 1000000/(988*2*10)+(988)/(2*10))SHL 8 ;SoL tone & Duration DC 1000000/(1047*2*10)+(1047)/(2*10))SHL 8 ;LA tone & Duration DC 0 ;Table end code END 1000000/(523*2*10) DO TONE 523/(2*10) DURATION
11
11 SHL 00111111 +20 SHL 8 00111111 (TBLP 顯示 0 至 9) +00100000 =01011111 (after SHL Bit 14-8 放置 TBLH 作為 DELAY)
12
12 音調高低之參數 F 為產生之音調頻率 半週期時間為 (2*F) -1 Delay 時間 DEL1*10us 產生 F Hz 所需之 DEL1 為 (2F) -1 /(10*10 -6 )=10 6 /(2*F*10)
13
13 產生 0.5 秒之頻率 F Hz 所需脈波數為 F/2 8 bit problem Two Loop 內圈 10 外圈 F/(2*10)
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.