久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標(biāo)題:
單片機(jī)呼吸燈+流水
[打印本頁]
作者:
愛笑的十三
時(shí)間:
2018-7-21 19:22
標(biāo)題:
單片機(jī)呼吸燈+流水
這是我最近寫的一個(gè)呼吸燈,第一次用頭文件寫遇到了好多小問題,有些問題解答了,有些沒解答,小編純屬小白,希望能夠?qū)Υ蠹矣兴鶐椭?br />
/*********************************************
心形燈功能
類1:huxi()
類2:move()
組合:combine()
總體實(shí)現(xiàn)函數(shù):amain()
****************************************/
#include<reg52.h>
#include"move.h"
#include"type_def.h"
/*1.***************全局變量聲明專區(qū)******************/
u16 led1[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
u16 led11[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
u16 led2[4]={0xfc,0xf3,0xcf,0x3f};
u16 led3[5]={0xf8,0xf1,0xe3,0x8f,0x1f};
u16 led4[4]={0xf0,0xc3,0x0f,0x3f};
u16 led5[8]={0xe0,0x0e,0xd0,0x0d,0xc0,0x0c,0x70,0x07};
u16 led6[2]={0x88,0xe0};
//u16 flag=0; //動(dòng)作選擇標(biāo)志
sbit key=P3^0;
/*2.******************宏定義專區(qū)********************/
#define length 10000 //10ms
#define w1_0 20 //輸出有效電壓的步幅
#define w0_0 10 //初始化燈的亮度
/*3.*****************函數(shù)聲明專區(qū)*******************/
static void delay(u16 i);
static void time_huxi();
static void move_0();
static u16 anjian_0(u16 f);
/*4.**************函數(shù)實(shí)現(xiàn)模塊**********************/
static void delay(u16 i)//延時(shí)
{
while(i--)
{
int j;
for(j=0;j<125;j++);//1ms
}
}
static void time_huxi()//呼吸
{
TMOD|=0x01;//定時(shí)器進(jìn)行方式
TH0=(65536-10)/256;
TL0=(65536-10)%256;//1ms初值
ET0=1;
EA=1;
TR0=1; //通過控制TR0,來選擇打呼吸燈的效果,緩解了cpu的壓力,因?yàn)橹挥性谥袛嗨查g才會(huì)跳進(jìn)去,平常就在背后記著時(shí)間
}
static void move_0() //流水0
{
while(1)
{
u16 i; //是小局部變量的全局變量,對(duì)于小局部變量,值不會(huì)釋放
for(i=0;i<8;i++)
{
P1=led1[i];
P0=led1[i];
delay(50);
}
P1=0XFF;
P0=0XFF;
for(i=0;i<8;i++)
{
P3=led1[i];
P2=led11[i];
delay(50);
}
P2=0XFF;
P3=0XFF;
for(i=0;i<8;i++)
{
P2=led1[i];
P3=led11[i];
delay(50);
}
P3=0XFF;
P2=0XFF;
for(i=0;i<8;i++)
{
P1=led11[i];
P0=led11[i];
delay(50);
}
P1=0XFF;
P0=0XFF;
}
}
static u16 anjian_0(u16 f)//按鍵檢測(cè)
{
if(key==0)
{
delay(10);
if(key==0)
{
f++;//作為返回值,都達(dá)到加
while(!key);
}
}
return f; //僅僅作為返回值返回,返回給誰需要指定
}
/*5.*******************函數(shù)組裝專區(qū)************************/
void amain()
{
time_huxi();
while(1) //在執(zhí)行定時(shí)器中斷的時(shí)候,必須加while(1)是程序不能從主函數(shù)中跳出來,進(jìn)一步實(shí)現(xiàn)定時(shí)器里的程序,大多數(shù)函數(shù)雖然不要while(1)也行,會(huì)執(zhí)行看門狗程序,但是有些必須加,加上絕對(duì)正確
{
// static u16 flag=0; //因?yàn)樵谘h(huán)的過程中,循環(huán)里面定義的變量也是一個(gè)局部變量,完成一次循環(huán)會(huì)自動(dòng)釋放原始值
// flag=anjian_0(flag);
// switch(flag)
// {
// case 0:
// P0=0X00;break;
// case 1:
// P0=0X0F;break;
// case 2:
// P0=0XF0;
// break;
// default :flag=0;
// }
;
}
}
void bmain()
{
time_huxi();
move_0();
}
/*6.********************實(shí)現(xiàn)中斷專區(qū)****************/
void T_PWM()interrupt 1
{
static int wide1=w0_0,wide2=length-w0_0,i=0,flag=0;//因?yàn)檠h(huán)一次過后局部變量i釋放 了,所以沒有達(dá)到++效果
TR0=0;
if(flag==0)
{
i++;
wide1+=w1_0;
wide2-=w1_0;
if(i%2==0)
{
TH0=(65536-wide1)/256;
TL0=(65536-wide1)%256;
P2=0X0F;
}
else
{
TH0=(65536-wide2)/256;
TL0=(65536-wide2)%256;
P2=0XFF;
}
if(wide1==length-w0_0)
flag=1;
}
else if(flag==1)
{
i++;
wide1-=w1_0;
wide2+=w1_0;
if(i%2==0)
{
TH0=(65536-wide1)/256;
TL0=(65536-wide1)%256;
P2=0X0F;
}
else
{
TH0=(65536-wide2)/256;
TL0=(65536-wide2)%256;
P2=0XFF;
}
if(wide1==w0_0)
flag=0;
}
TR0=1;//為什么有些時(shí)候聲明變量必須是在前面呢
}
復(fù)制代碼
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
国产欧美精品区一区二区三区
|
精品一区二区三区免费视频
|
欧美日韩国产一区二区三区
|
日韩成人av在线
|
91久久精品国产91久久
|
99视频在线免费观看
|
国产伦精品一区二区
|
欧美video
|
精品久久久久久久久久久
|
午夜精品一区二区三区在线视频
|
国产日批
|
中文一区二区
|
中文字幕在线国产
|
日韩免费在线观看视频
|
日本精品视频
|
成年人黄色小视频
|
久久久久久高潮国产精品视
|
91av在线免费看
|
久久国产婷婷国产香蕉
|
国产精品视频网站
|
久久精品国产久精国产
|
欧美日韩亚洲一区二区
|
九九热在线观看视频
|
日本久久www成人免 成人久久久久
|
国产激情视频网
|
久久午夜国产精品www忘忧草
|
欧美日韩国产三级
|
亚洲国产精品99久久久久久久久
|
操久久
|
欧美9999
|
国产精品电影网
|
日本激情视频中文字幕
|
av在线一区二区三区
|
日韩电影免费观看中文字幕
|
亚洲成人蜜桃
|
毛片免费看的
|
99热这里有精品
|
一级视频黄色
|
欧美一级欧美一级在线播放
|
成人国产精品入口免费视频
|
精品久久久久久亚洲国产800
|