Assembly 用PIC16F877A实现汇编语言中断

Assembly 用PIC16F877A实现汇编语言中断,assembly,microcontroller,interrupt,Assembly,Microcontroller,Interrupt,我想做一些微控制器的练习,我有点像n00b,如果这太明显,我很抱歉 基本上,我们有一个PIC16F877A,带有连接RC4和RC5端口C的按钮,配置为输入。我们的想法是使用RC5来激活中断,并等待TMR0中断来激活蜂鸣器(我们现在使用的是LED)。然后,RC4必须停用中断并停止蜂鸣器/LED(连接至RC0,配置为输出) 我们制作了我们的程序,它在MPLAB上运行得很好,但是我们在让它在真实的东西上运行时遇到了问题 以下是节目: list p=16f877a include "p16f877a.i

我想做一些微控制器的练习,我有点像n00b,如果这太明显,我很抱歉

基本上,我们有一个PIC16F877A,带有连接RC4和RC5端口C的按钮,配置为输入。我们的想法是使用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,它才开始工作,12Mhz的振荡器工作了,但有点疯狂。我们也试过20Mhz,但也不太好用。 我们甚至尝试了不同的配置词,但没有得到任何好的结果

请帮帮我,我有点绝望。

首先,代码

        MOVWF 0xF0
        MOVWF TRISC
        MOVWF 0x00
        MOVWF TRISB
MOVWF不执行它应该执行的操作,MOVWF将工作寄存器的内容移动到GPR或SFR或其地址,因此您要做的是用工作寄存器的未知值填充地址0xF0(GPR)和0x00(间接寻址寄存器)。相反,您的代码应该以

        MOVLW 0xF0
        MOVWF TRISC
        MOVLW 0x00
        MOVWF TRISB
<如果RC4和RC4输入是按钮或开关,则考虑在HW或SW

中实现阿德弹跳解。 最后,对于时钟设置,如果使用8MHz或更高频率的时钟,MPLAB中的配置字应设置为HS,如果使用4MHz,则应设置为XT