www.pudn.com > 双音多频(DTMF)信号发生器的使用源程序.rar > ht9200.asm
include ht48c10.inc data .section 'data' HT9200A EQU 0 HT9200B EQU 1 SERIAL EQU 0 PARALLEL EQU 1 ;----------------------- DATA EQU PA.0 CE EQU PA.1 CLK EQU PA.2 ;----------------------- SP EQU PA.3 D0 EQU PB.0 D1 EQU PB.1 D2 EQU PB.2 D3 EQU PB.3 ;----------------------- count db ? buffer db ? bit_count db ? send_data db ? delay_count1 db ? delay_count2 db ? delay_count3 db ? ;----------------------- TYPE_MODE MACRO TYPE,MODE IFE TYPE _TYPE EQU 0 _MODE EQU 0 ELSE _TYPE EQU 1 IFE MODE _MODE EQU 0 ELSE _MODE EQU 1 ENDIF ENDIF ENDM ;----------------------- _SERIAL_MODE MACRO LOCAL loop,next clr pac clr SP clr CE set CLK call delay loop: mov a,18h mov count,a clr buffer next: mov a,buffer mov send_data,a call send_byte call delay inc buffer sdz count jmp next mov a,0ffh mov send_data,a call send_byte call delay jmp loop ENDM ;----------------------- _PARALLEL_MODE MACRO LOCAL loop,next clr pac clr pbc set SP clr CE loop: mov a,10h mov count,a clr buffer next: mov a,buffer mov pb,a set CE clr CE call delay inc buffer sdz count jmp next jmp loop ENDM ;--------------------------------- code .section at 0 'code' org 00h jmp start org 04h reti org 08h reti ;--------------------------------- send_byte proc mov a,05h mov bit_count,a next_bit: rrc send_data sz c jmp send_1 send_0: clr DATA jmp act send_1: set DATA act: clr CLK set CLK sdz bit_count jmp next_bit ret send_byte endp ;--------------------------------- delay proc mov a,02h mov delay_count1,a mov delay_count2,a mov delay_count3,a d: sdz delay_count1 jmp d sdz delay_count2 jmp d sdz delay_count3 jmp d ret delay endp ;--------------------------------- start: ; TYPE_MODE HT9200A/HT9200B,SERIAL/PARALLEL TYPE_MODE HT9200A,SERIAL IF _TYPE IF _MODE _PARALLEL_MODE ELSE _SERIAL_MODE ENDIF ELSE _SERIAL_MODE ENDIF END