欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
大佬,能幫我看看單片機閃爍函數為什么有問題嗎,Mode3是閃爍函數
[打印本頁]
作者:
yenb
時間:
2023-12-4 19:49
標題:
大佬,能幫我看看單片機閃爍函數為什么有問題嗎,Mode3是閃爍函數
#include <reg52.h>
#include "Delay.h"
sbit K1=P3^0;
#define uint unsigned int
#define uchar unsigned char
bit Timer_1s,Timer_500ms;
// 數碼管段選信號
uchar code duan[] = {
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,
//0 1 2 3 4 5 6 7 8 9 A
0x7c,0x39,0x5e,0x79,0x71,
//B C D E F
0x76,0x73,0x6e,0x38,0x3e, 0x31,0x50,0X37,0x01,0x40,0x08,0X00,
//H16 P17 Y18 L19 V20 T21 R22 N23 上— 中- 下-
};
uchar T0_Cnt=0;
// 數碼管位選信號
uchar code wei[] = {
0x1c,0x18,0x14,0x10,0x0c,0x08,0x04,0x00
};
uchar code SMGCONTENT[]={10,2,2,1,3,27,4,7,27, //A2213 47
16,10,17,17,18,24,25,26, 27, //HAPPY_--
18,14,23,11,6,6,6,27, //YENB666
18,14,23,11,6,6,6,27, //YENB666
18,14,23,11,6,6,6,27 }; //YENB666
uchar LEDBUFF[8];
uchar LEDFLASHBUFF[8];
uchar j,leftnum,Mode,i,flash,KeyVal=0;
uint t;
void Timer0Init( void )
{
TMOD = 0x01;
TH0 = (65536-5000)/256;
TL0 = (65536-5000)%256;
ET0 = 1;
EA = 1;
TR0 = 1;
}
void Timer1Init( void )
{
TMOD = 0x01;
TH1 = (65536-5000)/256;
TL1 = (65536-5000)%256;
ET1 = 1;
EA = 1;
TR1 = 1;
}
void display();
void main()
{
Timer0Init();
Timer1Init();
while (1)
{
display();
}
}
void display()
{
if(Mode==0)
{
for(j=0;j<8;j++)
{LEDBUFF[j]=SMGCONTENT[j];
}
}
if(Mode==1)
{
for(j=0;j<8;j++)
{LEDBUFF[j]=SMGCONTENT[j+9];}
}
if(Mode==2)
{
for(j=0;j<8;j++)
{LEDBUFF[j]=SMGCONTENT[j+18];}
}
if(Mode==3) //左移
{
leftnum=0;
do
{
for(j=0;j<8;j++)
{
LEDBUFF[j]=SMGCONTENT[j+leftnum];
}
Delay(1000);
}
while(leftnum++<36);
leftnum=0;
Mode=0;
}
}
void Timer0_ISR(void) interrupt 1
{
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
if(T0_Cnt==200) {T0_Cnt=0;Timer_1s=1;Mode++; }
T0_Cnt++;
P0=0x00;
P2=wei[i];
if(KeyVal!=0&&flash)
P0=duan[LEDFLASHBUFF[i]];
else
P0=duan[LEDBUFF[i]];
i++;
if(i==8) i=0;
}
void Timer1_ISR(void) interrupt 3
{
TH1=(65536-10000)/256;
TL1=(65536-10000)%256;
t++;
if(t==50)
{ t=0;Timer_500ms=1;flash=~flash;}
if(K1==0)
{
Delay(10);
if(K1==0)
{KeyVal++;
while(K1==0);}
}
switch(KeyVal)
{
case 1 :LEDFLASHBUFF[0]=27;LEDFLASHBUFF[1]=27;
LEDFLASHBUFF[2]=LEDBUFF[2];LEDFLASHBUFF[3]=LEDBUFF[3];
LEDFLASHBUFF[4]=LEDBUFF[4];LEDFLASHBUFF[5]=LEDBUFF[5];
LEDFLASHBUFF[6]=LEDBUFF[6];LEDFLASHBUFF[7]=LEDBUFF[7];
break;
case 2 :LEDFLASHBUFF[0]=LEDBUFF[0];LEDFLASHBUFF[1]=LEDBUFF[1];
LEDFLASHBUFF[2]=27;LEDFLASHBUFF[2]=27;
LEDFLASHBUFF[4]=LEDBUFF[4];LEDFLASHBUFF[5]=LEDBUFF[5];
LEDFLASHBUFF[6]=LEDBUFF[6];LEDFLASHBUFF[7]=LEDBUFF[7];
break;
case 3 :LEDFLASHBUFF[0]=LEDBUFF[0];LEDFLASHBUFF[1]=LEDBUFF[1];
LEDFLASHBUFF[2]=LEDBUFF[2];LEDFLASHBUFF[3]=LEDBUFF[3];
LEDFLASHBUFF[4]=27;LEDFLASHBUFF[5]=27;
LEDFLASHBUFF[6]=LEDBUFF[6];LEDFLASHBUFF[7]=LEDBUFF[7];
break;
case 4 :LEDFLASHBUFF[0]=LEDBUFF[0];LEDFLASHBUFF[1]=LEDBUFF[1];
LEDFLASHBUFF[2]=LEDBUFF[2];LEDFLASHBUFF[3]=LEDBUFF[3];
LEDFLASHBUFF[4]=LEDBUFF[4];LEDFLASHBUFF[5]=LEDBUFF[5];
LEDFLASHBUFF[6]=27;LEDFLASHBUFF[7]=27;
break;
default : LEDFLASHBUFF[0]=LEDBUFF[0];LEDFLASHBUFF[1]=LEDBUFF[1];
LEDFLASHBUFF[2]=LEDBUFF[2];LEDFLASHBUFF[3]=LEDBUFF[3];
LEDFLASHBUFF[4]=LEDBUFF[4];LEDFLASHBUFF[5]=LEDBUFF[5];
LEDFLASHBUFF[6]=LEDBUFF[6];LEDFLASHBUFF[7]=LEDBUFF[7];
break;
}
}
復制代碼
A2213_47_葉小宇_實驗4.zip
(89.34 KB, 下載次數: 4)
2023-12-4 19:46 上傳
點擊文件名下載附件
作者:
gcl51
時間:
2023-12-4 23:54
t=0;Timer_500ms=1;flash=~flash;這句話是什么作用
作者:
hy47566398
時間:
2023-12-5 00:02
粗看了下,似乎28行的Mode沒有初始化,起始值也許不會在0~3,keyVal++可以大于4,沒有區間限制了
從126行 if(K1==0) 開始往后的代碼是可以放在主函數的while()里,中斷函數里的代碼越多越會影響定時器時間精度。
作者:
tyrl800
時間:
2023-12-5 08:40
中斷函數里還有延時函數
作者:
yenb
時間:
2023-12-5 18:42
hy47566398 發表于 2023-12-5 00:02
粗看了下,似乎28行的Mode沒有初始化,起始值也許不會在0~3,keyVal++可以大于4,沒有區間限制了
從126 ...
感謝大佬解答
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1