📄 autoshut.c
字号:
#include <pic18.h>#include <stdio.h>void init(void);void interrupt ISR(void);void putch(unsigned char);static volatile bit update;void main(void){ init(); while(1) { if(INT1IF) // pushbutton to turn ECCP module back on { ECCPASE=0; INT1IF=0; update=1; } if(update) // if the state of operation has changed { printf("ECCP module is "); // report current state of ECCP module if(ECCPASE) printf("shutdown\r"); else printf("active \r"); update=0; } RC2=!ECCPASE; // GREEN LED RC0=ECCPASE; // RED LED }}void init(void){ GIE=1; PEIE=1; IPEN=0; CMIF=0; CMIE=1; INT0IF=0; // INT0 is autoshutdown source INT0IE=1; INT1IE=0; // INT1 re-activates ECCP module TXEN=1; // enable serial transmissions SPEN=1; ECCPAS=0x70; // autoshutdown triggered from 3 possible sources ECCP1CON=0x0C; // ECCP module is in PWM mode. ECCPR1L=0x33; TMR2ON=1; // TMR2 required for PWM mode TRISB=0xFF; TRISC=0x00; TRISD=0x0F; CMCON=0b00000110; // comparator = CVREF module vs Pushbuttons CMIF=0; CMIE=1; CVRCON=0b10101000; // set up CVREF module update=1;}void interrupt ISR(void){ if((INT0IE)&&(INT0IF)) INT0IF=0; if((CMIE)&&(CMIF)) CMIF=0; update=1;}void putch(unsigned char c){ TXREG=c; while(!TXIF)continue;TXIF=0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -