;-----------------------------------------------------------------------; ; my5.ASM 按S34,呼叫CQ,呼叫的同时LED指示 ; ; 硬件连接: ; ; 把PORTB的8号口的跳线接到BUZ上 ; ; 把PORTB的1号口的跳线接到LED的任何一口 ; ;-----------------------------------------------------------------------; ;-----------------------------------------------------------------------; ; 作者:孙继利 BG2CM 2001年12月23日 ; ; 荣新华 BD6CR 2001年12月25日 修改 ; ;-----------------------------------------------------------------------; LIST P=16F84 ; 告诉编译程序使用何种PIC单片机 INCLUDE "p16f84.inc" ; 定义了特殊寄存器等内容的头文件 ERRORLEVEL -224 __CONFIG _PWRTE_ON & _XT_OSC & _WDT_OFF ; 配置字 ;变量定义 L1 EQU 0x20 L2 EQU 0x21 L3 EQU 0x22 ;引脚定义 #define audio_out PORTB,7 #define led_out PORTB,0 ORG 0 ; 程序从零地址开始 ;-----------------------------------------------------------------------; ; 我们设置了PORTA4为输入,PORTA0-3为输出,PORTB0-7均为输出 ; ;-----------------------------------------------------------------------; movlw B'00010000' ; 1代表输入,0代表输出 tris PORTA ; 设置PORTA movlw B'00000000' tris PORTB ; 设置PORTB ;-----------------------------------------------------------------------; ; 这里是主程序 ; ;-----------------------------------------------------------------------; movlw B'00000000' movwf PORTB ; 初始为00000000 loop: btfsc PORTA,4 ; 只有PORTA4是低电平方可向下执行(S34按下时) goto loop bsf led_out ;LED亮,指示正在发CQ call dash ;发送C,-.-. call sspace call dot call sspace call dash call sspace call dot call lspace ;字母间距 call dash ;发送Q,--.- call sspace call dash call sspace call dot call sspace call dash call lspace call sspace call sspace bcf led_out ;LED灭,指示发CQ结束 goto loop ;循环,等待下一次按S34 ;发划的子程序-------------------------------------------------------- dash bsf audio_out movlw .3 movwf L1 call delay bcf audio_out return ;发点的子程序-------------------------------------------------------- dot bsf audio_out movlw .1 movwf L1 call delay bcf audio_out return ;点划间隔子程序------------------------------------------------------ sspace movlw .1 movwf L1 call delay return ;字母间隔子程序------------------------------------------------------ lspace movlw .3 movwf L1 call delay return ;可控延时长度的延时子程序,L1为传送变量------------------------------ delay nop loopw1 movlw .81 movwf L2 loopw2 movlw .255 movwf L3 loopw3 decfsz L3, f goto loopw3 decfsz L2, f goto loopw2 decfsz L1, f goto loopw1 return end ; 形式上的程序结束