RA4 RA5 接SW2 SW1按键 RB7接LED delay.c #include "delay.h" void DelayMs(unsigned char cnt) { #if XTAL_FREQ <= 2MHZ do { DelayUs(996); } while(--cnt); #endif #if XTAL_FREQ > 2MHZ unsigned char i; do { i = 4; do { DelayUs(250); } while(--i); asm("clrwdt"); } while(--cnt); #endif } delay.h #ifndef XTAL_FREQ #define XTAL_FREQ 4MHZ /* Crystal frequency in MHz */ #endif #define MHZ *1000L /* number of kHz in a MHz */ #define KHZ *1 /* number of kHz in a kHz */ #if XTAL_FREQ >= 12MHZ #define DelayUs(x) { unsigned char _dcnt; / _dcnt = (x)*((XTAL_FREQ)/(12MHZ)); / while(--_dcnt != 0) / continue; } #else #define DelayUs(x) { unsigned char _dcnt; / _dcnt = (x)/((12MHZ)/(XTAL_FREQ))|1; / while(--_dcnt != 0) / continue; } #endif extern void DelayMs(unsigned char); toppic.c #include "pic16f685.h" #include "toppic.h" #include "delay.h" //#define BYTE unsigned char //#define WORD unsigned int #define uchar unsigned char