📄 ledx8.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 + -