我正在尝试做一些微控制器练习,如果这太明显了,我有点抱歉。
基本上,我们拥有的是一个 PIC16F877A,其连接按钮到 RC4 和 RC5 上的 PORTC,配置为输入。这个想法是使用 RC5 来激活中断并等待 TMR0 中断来激活蜂鸣器(我们现在正在使用 LED)。然后,RC4 必须停用中断并停止蜂鸣器/LED(连接到 RC0,配置为输出)。
我们制作了我们的程序,它在 MPLAB 上运行得很好,但我们在让它在真实的东西上运行时遇到了问题。
这是程序:
list p=16f877a
include "p16f877a.inc"
__CONFIG _CP_OFF & _DEBUG_OFF & _WRT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC
DELH EQU 0x2C
DELL EQU 0x2F
DELI EQU 0x2E
ORG 0x00
GOTO MAIN
ORG 0x04
GOTO INTERRUMPE
MAIN BCF STATUS,RP0
BCF STATUS,RP1
CLRF PORTC
CLRF PORTB
BSF STATUS,RP0
MOVWF 0xF0
MOVWF TRISC
MOVWF 0x00
MOVWF TRISB
MOVLW 0x83
MOVWF OPTION_REG
BCF STATUS,RP0
TECLA BTFSS PORTC,5
GOTO TECLA
MOVLW 0xB8
MOVWF INTCON
MOVLW 0x63
MOVWF TMR0
TECLA2 BTFSS PORTC,4
GOTO TECLA2
BCF INTCON,7
BCF PORTC,0
GOTO TECLA
INTERRUMPE BTFSS INTCON,2
GOTO REGRESO
BSF PORTC,0
MOVLW 0xBF
MOVWF TMR0
BCF INTCON,T0IF
REGRESO RETFIE
END
我们必须遵循最低限度的制度:
在我们将振荡器从 4Mhz 更改为 12Mhz 之前,它什么也没做,使用 12 Mhz 振荡器它有点工作,但有点疯狂。我们也尝试了 20Mhz,但效果也不是很好。我们甚至尝试了不同的配置词,但我们没有得到任何好的结果。
请帮忙,我有点绝望。