亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標題:
時鐘——數碼管顯示,大佬解釋下代碼唄
[打印本頁]
作者:
VVCFGHHJ
時間:
2018-6-29 13:06
標題:
時鐘——數碼管顯示,大佬解釋下代碼唄
#include "reg52.h"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
uchar code ledcode[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; // 0-9,-
#define codport P0
#define sitport P2
sbit LSA=P2^2;
sbit LSB=P2^1;
sbit LSC=P2^0;
uchar data disbuf[]={10, 10, 10, 10, 10, 10, 10, 10,};
uchar data hou=23,min=59,s=50,num;
uchar naoling[]={0,0,0};
bit flag=0;
sbit beep=P3^1;
//************//延時************//
void delay(unsigned int i)
{
while(i--);
}
//************//數碼管動態掃描************//
void display()
{
unsigned int i;
for(i=0;i<8;i++)
{
switch(i)
{
case(0):
LSA=0;LSB=0;LSC=0; break;
case(1):
LSA=1;LSB=0;LSC=0; break;
case(2):
LSA=0;LSB=1;LSC=0; break;
case(3):
LSA=1;LSB=1;LSC=0; break;
case(4):
LSA=0;LSB=0;LSC=1; break;
case(5):
LSA=1;LSB=0;LSC=1; break;
case(6):
LSA=0;LSB=1;LSC=1; break;
case(7):
LSA=1;LSB=1;LSC=1; break;
}
codport = ledcode[disbuf[i]];
delay(100);
P0=0x00;
}
}
//************//矩陣按鍵************//
unsigned char Key()
{
unsigned char Row, Col, k;
P1 = 0x0f;
k=P1&0x0f;
if(k == 0x0f)
return -1;
delay(12);
k = P1&0x0f;
if(k == 0x0f)
return -1;
for(Row = 0; Row < 4; Row++)
{
P1 = 0x7f>>Row;
k = P1&0x0f;
if(k!=0x0f)
{
Col = 0;
while(k&(1<<Col))
Col++;
break;
}
}
while((P1&0x0f)!=0x0f);
k = Row + Col * 4;
return k;
}
//************//定時器0中斷函數************//
void time0() interrupt 1
{
T0 = 55536%256;
TH0 = 55536/256;
num = num+1;
if(num > 99)
{
num = 0;
s = s + 1;
if(s > 59)
{
s = 0;
min = min + 1;
}
if(min > 59)
{
min = 0;
hou = hou + 1;
}
if(hou > 23)
{
hou = 0;
}
if((min==0)&&(s==0))
{
beep=~beep;
delay(300);
}
if(flag == 0)
{
disbuf[0] = hou/10;
disbuf[1] = hou%10;
disbuf[2] = 10;
disbuf[3] = min/10;
disbuf[4] = min%10;
disbuf[5] = 10;
disbuf[6] = s/10;
disbuf[7] = s%10;
}
else
{
disbuf[0] = naoling[0]/10;
disbuf[1] = naoling[0]%10;
disbuf[2] = 10;
disbuf[3] = naoling[1]/10;
disbuf[4] = naoling[1]%10;
disbuf[5] = 10;
disbuf[6] = naoling[2]/10;
disbuf[7] = naoling[2]%10;
}
}
}
//************//選擇矩陣按鍵************//
void keyProcess(uchar k)
{
if(k == 0)
{
flag = ~flag;
}
if(flag == 0)
{
if(k == 7){
if(hou<=24){hou+=10;}
else{hou=hou%10;}
}
if(k == 11){
if(hou<=24){hou+=1;}
else{hou=hou/10;}
}
if(k == 6){
if(min<=60){min+=10;}
else{min=min%10;}
}
if(k == 10){
if(min<=60){min += 1;}
else{min=min/10;}
}
if(k == 5){
if(s<=60){s += 10;}
else{s=s%10;}
}
if(k == 9){
if(s<=60){s += 1;}
else{s=s/10;}
}
}
}
//************//主函數************//
void main()
{
uchar k;
TMOD = 0x01;
TL0 = 55536%256;
TH0 = 55536/256;
ET0 =1;
EA = 1;
TR0 = 1;
while(1)
{
display();
k = Key();
keyProcess(k);
}
}
復制代碼
作者:
凌凈清河
時間:
2018-6-30 09:11
可以看到,主函數中保持循環的有這三個函數:
display();//用于顯示某固定數組中的值
Key();//執行矩陣鍵盤掃描,返回定義的鍵值給K
keyProcess(k);//按鍵處理,根據采集的鍵值對時間進行相應的處理
程序不斷運行,調用定時器0每過一段時間刷新時間值,并更新顯示數組,同時根據鍵掃描結果修改顯示的時間值,就醬。
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1