linux 下,如何写一个呼吸灯的驱动

linux 下,如何写一个呼吸灯的驱动,第1张

spi总线驱动在linux中是采用了分层设计和分隔设计的思想,闭宏spi控差派制器的驱动和核心层的通用api内核已经写完了虚态贺,你只要写外设驱动就好,具体你可以去看一下你的spi_s3c24xx.c这个驱动是基于platfoem写的,里面含有如何调用核心api。

#include<reg51.h>

#define uint unsigned int

#define uchar unsigned char

sbit LED0=P1^0// 设置1^0为led灯端口

void init()

void delay(uint t)

{

while(--t)

}

void huxi() //呼吸灯程友腊序

{

uint CYCLE=700,PWM=0//定义周期并赋值

while(1) //主循环

{

LED0=1

delay(60000) // 可以看到熄灭的过程

for(PWM=1PWM<CYCLEPWM++) //PWM_LOW表示低电平时间,这个循环中低电平时长从亮庆1累加到CYCLE(周期)的值,即600次

{

LED0=0 //点亮LED

delay(PWM)//延时长度,600次循环中从1加好键滑至599

LED0=1 //熄灭LED

delay(CYCLE-PWM)//延时长度,600次循环中从599减至1

}

LED0=0

for(PWM=CYCLE-1PWM>0PWM--) //与逐渐变亮相反的过程

{

LED0=0

delay(PWM)

LED0=1

delay(CYCLE-PWM)

}

}

}

void ctrl (uchar dat) //处理函数

{

switch(dat)

{

case '0':LED0=1break

case '1':LED0=0break

case '2':huxi()break

default: break

}

}

void main()

{

init()

while(1)

{

uchar Tmp //定义临时变量

if(RI)//判断是接收中断产生

{ RI=0 //标志位清零

Tmp=SBUF

ctrl(Tmp)//读入缓冲区的值

}

LED0=0

delay(10000)

LED0=1

delay(10000)

}

}

void init()

{

SCON = 0x50 /* SCON: 模式 1, 8-bit UART, 使能接收 */

TMOD = 0x20 /* TMOD: timer 1, mode 2, 8-bit reload*/

TH1=TL1= 0xFD /* TH1: 9600波特率 @ 11.0592MHz */

TR1 = 1 /* TR1: timer 1 run */

EA= 1 /*打开总中断*/

// ES= 1

// TI=0

// RI=0/*打开串口中断*/

while (1)

{ LED0=0

delay(10000)

LED0=1

delay(10000)

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12374112.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存