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

📄 ledx8.c

📁 EX2_LEDX8: (发光二极管) P0、P2 端口的LED 先从左至右方向流水灯显示
💻 C
字号:
/*******************************************************************
*                                                                  *
* ME850单片机开发实验仪演示程序 - LED 左右移动流水灯               *
*                                                                  *
*  P0、P2 端口8位LED显示                                           *
*                                                                  *
* 版本: V1.0 (2008/06/11)                                         *
* 作者: gguoqing (Email: gguoqing@willar.com)                     *
* 作者: gguoqing (gguoqing@willar.com)                            *
* 网站: www.sofi-tech.com(硕飞科技) www.mcusj.com(伟纳单片机世界) *
* 邮箱: sofitech@tom.com                                        *
*                                                                  *
*【版权】Copyright(C)伟纳电子 www.willar.com  All Rights Reserved  *
*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!        *
*                                                                  *
*******************************************************************/

#include <reg52.h>
#include <intrins.h>

unsigned char  scan_num;

char code reserve [3] _at_ 0x3b;  //保留0x3b开始的3个字节

/**********************************************************

  延时函数

**********************************************************/
void delayms(unsigned int ms) 
{
  unsigned char k;
  while(ms--)
  {
    for(k = 0; k < 114; k++);
  }
}
        
/**********************************************************

  主函数

**********************************************************/
void main(void)
{
   unsigned char i;
   P0 = 0xff;                //初始化端口
   P2 = 0xff;

   while(1)
   {
     scan_num = 0xfe;        //扫描初始值

     for(i = 0;i < 8;i++)   //左移显示  
   	 {
       P0 = scan_num;        //送显示
       P2 = scan_num;
       scan_num<<=1;         //左移一位
       scan_num|=0x01;       //最低位补"1"
       delayms(300);         //延时300ms
     }
     P0 = 0xff;              //关闭LED显示
     P2 = 0xff;
     delayms(300);           //延时300ms

     scan_num = 0x7f;        //扫描初始值

     for(i = 0;i < 8;i++)    //右移显示
     {
   	   P0 = scan_num;        //送显示
       P2 = scan_num;
       scan_num >>=1;        //右移一位
       scan_num|=0x80;       //最高位补"1"
       delayms(300);         //延时300ms
     }
     P0 = 0xff;              //关闭LED显示
     P2 = 0xff;
     delayms(300);           //延时300ms
   }
}

/**********************************************************/

⌨️ 快捷键说明

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