📄 ledtest.c
字号:
/*驱动LED的示范代码
这段代码只是示范性的,实际使用时应根据开发硬件作相应修改
*/
/*LEDTest.c*/
#include<stdio.h>
#include<signal.h>
#include <asm/param.h>
#include<linux/timer.h>
#include<asm/delay.h>
#include<asm/io.h>
void leddisp(unsigned long d);
struct time_list ledtimer; //先定义一个长定时器数据结构
ledtimer.expires=2;/*在许多结构中Hz=100,jiffies每增加1,经过的时间为10ms,这里的扫描频率为50Hz,时间间隔为20ms,所以定expires为2*/
ledtimer.function=leddisp; //定义定时时间到了后的处理函数为leddisp()
void init_led()
{
outb(0x01,0x00) //关闭显示
add_timer($ledtimer);//设置好定时器
}
/*定时器处理函数*/
void leddisp(unsigned long d)
{
/*显示"2",其中p7置为高是为了使能3-8译码器。因为是第一位,位选线为
000*/
outw(0x01,0x82);
udelay(1000);//在这一位上停留1ms,以增强发光亮度
outw(0x01,0x90); //显示"0",位选线为001
udelay(1000);
outw(0x01,0xa0); //显示"0",位选线为010
udelay(1000);
outw(0x01,0x1b3); //显示"3",位选线为011
udelay(1000);
outw(0x01,0xc0); //显示"0",位选线为100
udelay(1000);
outw(0x01,0x1d8); //显示"8",位选线为101
udelay(1000);
outw(0x01,0xe2); //显示"2",位选线为110
udelay(1000);
outw(0x01,0xf5); //显示"5",位选线为111
udelay(1000);
outb(0x01,0x00) //一轮显示已经完了,消影输出
add_timer(&timer_list); //重新设置定时器
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -