📄 lab3a.asm
字号:
#INCLUDE p16F877A.inc ; Include the standard definitions
#DEFINE DEVICE_FREQ_HZ D'4000000' ; Used in later calculations
#DEFINE BEEP_HZ D'440' ; Chosen Beep Frequency
Start
BANKSEL TRISC ; BANKSEL to get to TRISC bank (bank 1)
bcf TRISC,2 ; Set CCP1 as an output
movlw ((DEVICE_FREQ_HZ/D'64')/BEEP_HZ)-1 ; Load period
movwf PR2 ; "
BANKSEL CCPR1L ; BANKSEL is needed to get bank to bank 0.
movlw ((DEVICE_FREQ_HZ/D'128')/BEEP_HZ) ; Load duty cycle
movwf CCPR1L ; "
movlw 0x06 ; Turn on TMR2 (for PWM)
movwf T2CON ; and /16 prescale
CheckButton
btfsc PORTA,4
goto ButtonOff
ButtonOn
movlw H'0C'
movwf CCP1CON
goto CheckButton
ButtonOff
clrf CCP1CON
goto CheckButton
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -