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

📄 led_liushui.c

📁 pic单片机C语言入门的最好源程序
💻 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 + -