|
2年前在一玩燈的方案公司,畫了好多的NY8A051一些板子,但一直沒時間搞來玩程序,今天試著調(diào)試了一把,發(fā)布。
單片機(jī)源程序如下:
- /* =========================================================================
- * Project: PB0 External Interrupt
- * File: main.c
- * Author: JasonLee
- * Version: V1.0
- * Date: 2022/04/05
- =========================================================================*/
- #include <ny8.h>
- #include "ny8_constant.h"
- #define UPDATE_REG(x) __asm__("MOVR _" #x ",F")
- #define RESULT 1 //定義 RESULT 為 0
- void main(void)
- {
- PORTB = 0; //PORTB data buffer = 0 (output low)
- #if 1==RESULT //低電平觸發(fā)
- IOSTB&=~(1<<0); //PB0設(shè)為輸出模式
- PORTB |= (1<<0); //PB0輸出高電平
- IOSTB&=~(1<<2); //PB2設(shè)為輸出模式,點(diǎn)LED燈
- T0MD &=~(1<<6); //T0MD的第6位INTEDG=0,當(dāng)PB0引腳發(fā)生下降沿時產(chǎn)生外部中斷
- #else //高電平觸發(fā)
- IOSTB&=~(1<<0); //PB0設(shè)為輸出模式
- IOSTB&=~(1<<2); //PB2設(shè)為輸出模式,點(diǎn)LED燈
- PORTB&=~(1<<0); //PB0默認(rèn)是低電平
- T0MD |=(1<<6); //T0MD的第6位INTEDG=1,當(dāng)PB0引腳發(fā)生上升沿時產(chǎn)生外部中斷
- #endif
- PCON |= (1<<6); //EIS:外部中斷選擇位,EIS=1時,PB0是外部中斷輸入。
- PCON |= (1<<7); //WDTEN=1時開啟WDT。
- INTE |= (1<<2); //INTIE:外部中斷使能位,INTIE=1時開啟外部中斷。
-
- UPDATE_REG(PORTB);
- INTF = 0; // Clear all interrupt flags
- ENI(); // Enable all unmasked interrupts
-
- while(1)
- {
- CLRWDT();
- }
- }
- //! interrupt service routine
- void isr(void) __interrupt(0)
- {
- if(INTFbits.INTIF)
- {
- PORTBbits.PB2 ^=1; //PB2翻轉(zhuǎn)
- INTFbits.INTIF=0;
- }
-
- }
復(fù)制代碼
|
評分
-
查看全部評分
|