从今天开始就要记录下单片机裸机的每一个小部分
led跑马灯
因为最终要汇总成一个大综合实验,在这里就是一个一个的小的.c文件
led.c
#include "myhead.h"
//自定义的头文件,里面包含所有需要的.h文件和系统文件
//myhead.h要在所有得裸机部件介绍完以后再贴出
void led()
{
unsigned int temp = 0xfe;
//程序运行开始led0亮
unsigned flag = 1;
//用来判断跑马灯是否继续运行
unsigned char key;
while(flag)
{
LEDPORT = temp;
//LEDPORT是在头文件中定义的宏myhead.h
delay_ms(100);
//延时2 * 100 + 12 ms
temp = _crol_(temp,1);
//_crol_()函数控制temp左移
key = key_scan();
//key_scan()获取矩阵键盘的逻辑键值
if(0xe7 == key)
{
lcd_over();
//lcd_over()在屏幕上显示test over
LEDPORT = 0xff;
//所有灯熄灭
flag = 0;
//标志置零
}
}
}
led.h
#ifndef _LED_H
#define _LED_H
extern void led();
#endif
delay.c
void delay_us(unsigned char t)//2t + 12
{
while(--t);
}
void delay_ms(unsigned char t)
{
while(t--)
{
delay_us(245);
delay_us(245);
}
}
void delay_s(unsigned char t)
{
while(t--)
{
delay_ms(200);
delay_ms(200);
delay_ms(200);
delay_ms(200);
delay_ms(200);
}
}
delay.h
#ifndef _DELAY_H
#define _DELAY_H
extern void delay_us(unsigned char t);
extern void delay_ms(unsigned char t);
extern void delay_s(unsigned char t);
#endif