📄 pic16f690.c
字号:
/****************************************************************/
//频率切换程序,从0.1HZ-1HZ,空档时ON,每档递增0.1HZ
//些程序不使用中断等任何高级功能,以便移植所有低档单片机,降低成本!
//
/****************************************************************/
#include <pic.h>
#include <pic16f685.h>
__CONFIG(0x03F8C);
//***************************************
#define BYTE unsigned char
#define WORD unsigned int
#define G_LED RC3
#define SW1 RB7
#define SW2 RB6
#define SW3 RB5
#define SW4 RB4
#define SW5 RC2
#define SW6 RC1
#define SW7 RC0
#define SW8 RA2
#define SW9 RA1
#define SW10 RA0
BYTE flash_data,flag_timesover;
//*************************************
void ini()
{
OPTION=07;//;定时器1:256分频器初始值
ANSEL=0;
ANSELH=0;
TRISA=0x07;
TRISB=0xf0;
TRISC=0x07;
PORTA=0;
PORTB=0;
PORTC=0;
}
//*****************************times查询子程序,flag_timesover=1时,延时500MS。
void sub_times()
{
BYTE i;
asm("clrwdt");
if (TMR0>121)
{
TMR0=0;
i++;
if(i>(flash_data*15))
{
flag_timesover=1;
i=0;
}
}
}
//*********************************
void Loop_hz()
{
sub_times();
if(flag_timesover==1)
{
flag_timesover=0;
if(flash_data!=0) //==0,没有键值,常亮
{
G_LED=!G_LED;
}
else
{
G_LED=1;
}
}
}
//*********************************
void Loop()
{
while(1)
{
asm("clrwdt");
flash_data=0;
// if(!SW1+!SW2+!SW3+!SW4+!SW5+!SW6+!SW7+!SW8+!SW9+!SW10==1) //所有的IO口,只能有一个为低电平
{
if(SW10==0)
{
flash_data=10;
}
if(SW9==0)
{
flash_data=9;
}
if(SW8==0)
{
flash_data=8;
}
if(SW7==0)
{
flash_data=7;
}
if(SW6==0)
{
flash_data=6;
}
if(SW5==0)
{
flash_data=5;
}
if(SW4==0)
{
flash_data=4;
}
if(SW3==0)
{
flash_data=3;
}
if(SW2==0)
{
flash_data=2;
}
if(SW1==0)
{
flash_data=1;
}
}
Loop_hz();
}
}
//*******************************
main()
{
ini();
Loop();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -