led.c

来自「可以在ARM 架构下运行的的 DOS (和MS-DOS兼容),非常难得的一个源码」· C语言 代码 · 共 73 行

C
73
字号
/*************************************Seekfor Embedded DOS v1.0***************************************************
 ******                   ***          *****                                    ******     ****     ****** v1.0
**   **                    **         **  **                                     **  **   **  **   **   ** 
**   **                    **         **                                         **   ** **    **  **   ** 
**                         **         **                                         **   ** **    **  **      
 **       *****    *****   ** ****  *******   *****  ********            *****   **   ** **    **   **     
  ***    **   **  **   **  ** **      **     **   **   *** **           **   **  **   ** **    **    ***   
    **   *******  *******  ****       **     **   **   **               *******  **   ** **    **      **  
     **  **       **       *****      **     **   **   **               **       **   ** **    **       ** 
**   **  **       **       ** **      **     **   **   **               **       **   ** **    **  **   ** 
**   **  **   **  **   **  **  **     **     **   **   **               **   **  **  **   **  **   **   ** 
******    *****    *****  ********  ******    *****  ******              *****  ******     ****    ******  
<1)基本描述
	Seekfor Embedded DOS v1.0是嵌入式的一个类DOS操作系统,支持FAT16/FAT32.
<2)文件描述
	文件名:led.c
	功能:LED驱动
<3>如需更新版本软件,请联系:
	QQ:82054357
	Mail:Seek_for@163.com
	MSN:sfrad32@hotmail.com
**************************************************************************************************************/
#ifndef __LED_C__
#define __LED_C__
#include "dos.h"
#if(SUPPORT_LED==1)


static char get_led_status()
{
	return rGPBDAT&0x03;
}

static void set_led_status(char ch)
{
	rGPBDAT&=~0x03;
	rGPBDAT|=ch&0x03;
}

void*LED_Open(char*name,char*mode)
{
	FILE*p=(FILE*)Device_CommonOpen(name,mode);
	if(!p) return (void*)0;
	rGPBCON&=~0x0f;
	rGPBCON|=0x05;
	return(void*)p;
}

int LED_Read(void*buff,int size)
{
	BYTE*ptr=(BYTE*)buff;
	while(size--)
	{
		*ptr++=get_led_status();
	}
	return 0;
}

int LED_Write(void*buff,int size)
{
	BYTE*ptr=(BYTE*)buff;
	while(size--)
	{
		set_led_status(*ptr++);
	}
	return 0;
}


#endif


#endif

⌨️ 快捷键说明

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