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

📄 ledtest.c

📁 《嵌入式Linux应用开发详解》中的源代码
💻 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 + -