📄 led_liushui.c
字号:
//************************************************************************
// 这是我找到PICC编译器后写的第一个PIC C程序,虽然我还不太懂PIC的指令但我 *
// 一样用C语言搞定 *
// 程序实现功能:流水灯在RB口输出 *
// 实验用MCU型号:PIC16F84A 2007年5月12日于温州瑞安 *
// 本程序经MPLAB V7.10版本挂HT-TECH-PICC-V8.05版本C编译器调试并经实验板 *
// 实际验证通过 作者:张建华 *
//************************************************************************
#include <pic.h> //PIC总的头文件
#define uchar unsigned char //在程序中用uchar置换unsgned char减省录入量
#define uint unsigned int //同上这是很多人的习惯性写法
#define led PORTB //用LED置换PORTB,方便以后移置。注意因单片机内核不同先查资料的
#define LED_TRIS TRISB //定义端口控制寄存器,。注意因单片机内核不同先查资料的
uchar led_sj[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; //LED流水灯输出数据的数组一共8个灯
void init84(void); //PIC芯片资源初始化函数,没办法PICC和KEIL C有点不一样,非得先这样
void led_out(void); //LED输出控制函数
void delay(uchar); //延时函数,用于LED延时否则肉眼观察不到亮灭
//********* 主函数 *************************************************************************************
void main()
{
init84(); //调PIC16F84A初始化函数
while(1) //无限循环函数,用for循环语句都一样个人习惯功能接近
{led_out();} //无限调用LED流水灯输出控制函数灯就这么一直循环亮灭下去
}
//********* 16F84资源初始化 ****************************************************************************
void init84(void)
{
LED_TRIS=0x00; //定义端口B为输出
INTCON=0x00; //关闭所有中断
}
//*********LED流水灯输出控制函数************************************************************************
void led_out(void)
{uchar k; //定义一个临时变量用于检测是否8个灯都输出完了
for(k=0;k<8;k++) //FOR语句,意思为:先给表达式1赋初值0,再判断表达式2是否成立如果成立即小于8
{led=led_sj[k]; //就执行一次语句体,再转去调整一次表达式3,如此这样知道表达式2不成立时退出
delay(130);} //
led=0xff; //8个灯都输出完后灭所有灯为下一轮做好准备
delay(130); //灭后最好延时一下,便于观察
}
//*********** 延时函数 **********************************************************************************
void delay(uchar x) //定义一个X的无符号型字符变量数值范围为0--255
{ //
uchar i; //定义一个I的无符号型字符变量数值范围为0--255
while(x--) //这里X为255,while语句判断表达式为0时才退出循环,也就是说255一直要自减为0
for(i=0;i<125;i++) //这里的FOR语句作为WHILE的内嵌语句体
; //如不太理解参考C语言基础知识
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -