⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 f_8_21_ledsw1.c

📁 PIC_Hi-Tech_C_Mike_Pearces_I2C_routines Microchi PIC_Hi-Tech C_I2C_for_EEPROM_24LC01B Code
💻 C
字号:

#include "config.h"#include "delay.h"#include "serial.c"// tests power-on reset bits, watchdog timer, and persistent variables 
//prototypeschar getch (void);
void putch (char c);
void pcrlf(void);
/* return 8 bit char from Recieve port */char getch (void){  unsigned char c;  while (!RCIF);  /* check RCIF bit */  c = RCREG;  return(c);}/* send 8 bit char to Recieve port */void putch (char c){  /* wait until transmit reg empty */  while (!TXIF); /* check TXIF bit */  TXREG = c;}     void pcrlf (void){  putch(0x0a);  putch(0x0d);}// 'persisent' prevents reset_cnt from being cleared on reset// however, reset_cnt is still stored in register bank, so is volatile// each press and release changes state#define LED_OFF     0  // turn off#define LED_ON      1  // turn on#define LED_BLINK   2  // start blinking#define LED_STOP    3  // stop blinkingunsigned char state;void main(void){  serial_init(95,1); // 19200 in HSPLL mode, crystal = 7.3728 MHz   pcrlf(); // this subroutine prints a newline to the terminal  printf("Led Switch/IO started");  pcrlf();  state = LED_OFF;  // RB4 is the output, RB7, RB0 are inputs  TRISB = 0xEF;  LATB = 0x00;  // enable the weak pullup on port B  RBPU = 0;  while(1) {    switch (state) {      case LED_OFF:	 printf("LED_OFF");pcrlf();	  LATB4 = 0;	  while(RB0);DelayMs(30); // wait for press 	  while(!RB0);DelayMs(30); // wait for release	  state = LED_ON;	  break;      case LED_ON:	 printf("LED_ON");pcrlf();	  LATB4 = 1;	  while(RB0);DelayMs(30);  // wait for press	  while(!RB0);DelayMs(30); // wait for release	  if (RB7) state = LED_BLINK;	   else state = LED_OFF;	  break;      case LED_BLINK:        printf("LED_BLINK");pcrlf();	// while not pressed        while (RB0) { 	  // toggle LED	  if (LATB4) LATB4 = 0;	     else LATB4 = 1;	  DelayMs(250);	}	DelayMs(30);//switch debounce	state = LED_STOP;	break;      case LED_STOP:        printf("LED_STOP");pcrlf();	LATB4 = 1;  // freeze on	while(!RB0); // wait for release	DelayMs(30);//switch debounce        state = LED_OFF;	break;    }  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -