當前位置:編程學習大全網 - 編程語言 - 求大神幫忙在這段單片機代碼加壹下註釋

求大神幫忙在這段單片機代碼加壹下註釋

先說下,妳的程序格式寫的太占用空間了,而且看著也不夠整潔

已經幫妳都註釋了,格式也做了調整,部分沒有調整,方便添加註釋

/***************************************************************************/

#include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

sbit P26=P2^6; sbit P27=P2^7;//數碼管片選控制用端口定義

sbit P20 =P2^0; sbit P21 =P2^1; sbit P22 =P2^2;//按鍵端口定義

uchar tt,a,b,c,d,e,f,second,minite, hour;//定義時分秒變量

uchar code smg[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//數碼管控制位

uchar code shuzi[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0xbf};//數字0-9

void display(uchar a,uchar b,uchar c,uchar d ,uchar e,uchar f);//數碼管顯示函數定義

void delay(uint z);//延時函數定義

/***************************************************************************/

void keyscan()

{

TR1=0;//關閉定時器

P2 |=0x07;//初始化 P2 端口狀態

if(P20==0)//如果按鍵被按下

{

delay(10);//延時去抖動

{

if(P20==0)//再次判斷按鍵是否被按下

{

hour++;//小時 加壹

if(hour==24){hour=0;}//如果達到24小時,則從0在開始

while(P20==0);//等待該按鍵松開

}

}

}//以下類推

if(P21==0){delay(10);if(P21==0){minite++;if(minite==60)minite=0;while(P21==0);}}

if(P22==0){delay(10);if(P22==0){second++;if(second==60)second=0;while(P22==0);}}

TR1=1;//打開定時器

}

/***************************************************************************/

void main()

{

hour=12; //初始化小時 變量

TMOD=0x10; ? //設置定時器1和計數器0

TH1=(65536-50000)/256; //定時器裝初值,高四位

TL1=(65536-50000)%256; //定時器裝初值,低四位

TR1=1; //啟動定時器1

ET1=1; //啟動定時器1中斷

EA=1; //開總中斷

P2 |=0x07; //初始化 P2 端口狀態

while(1) //主循環

{

keyscan(); //調用按鍵處理函數

if(tt==60){tt=0;second++;} //如果達到60毫,秒加壹

if(second==60){second=0;minite++;} //如果達到60秒,分加壹

if(minite==60){minite=0;hour++;} //如果達到60分,小時加壹

if(hour==24){hour=0;} //如果達到24小時,則從0在開始

f=second%10; e=second/10; //分離秒個位與十位的數值

d=minite%10; c=minite/10; //分離分個位與十位的數值

b=hour%10; ? a=hour/10; //分離小時個位與十位的數值

}

}

/***************************************************************************/

void display(uchar a,uchar b,uchar c,uchar d ,uchar e,uchar f)//數碼管顯示函數

{

P27=1; P1=smg[7]; P27=0; P26=1; P1=shuzi[f]; ?P26=0; P1=0; delay(1);//秒個位

P27=1; P1=smg[6]; P27=0; P26=1; P1=shuzi[e]; P26=0; P1=0; delay(1);//秒十位

P27=1; P1=smg[5]; P27=0; P26=1; P1=0xbf; ?P26=0; P1=0; delay(1);//分隔符

P27=1; P1=smg[4]; P27=0; P26=1; P1=shuzi[d]; P26=0; P1=0; delay(1);//分個位

P27=1; P1=smg[3]; P27=0; P26=1; P1=shuzi[c]; P26=0; P1=0; delay(1);//分十位

P27=1; P1=smg[2]; P27=0; P26=1; P1=0xbf; ?P26=0; P1=0; delay(1);//分隔符

P27=1; P1=smg[1]; P27=0; P26=1; P1=shuzi[b]; P26=0; P1=0; delay(1);//時個位

P27=1; P1=smg[0]; P27=0; P26=1; P1=shuzi[a]; P26=0; P1=0; delay(1);//時十位

}

/***************************************************************************/

void timer1() interrupt 3 //定時器中斷函數

{

TH1=(65536-10000)/256; TL1=(65536-10000)%256;//重裝定時器初值

tt++; display(a,b,c,d,e,f);//計數器 tt 累加,以及調用數碼管顯示函數

}

/***************************************************************************/

void delay(uint z) //延時函數

{uint t1,y; for(t1=z;t1>0;t1--){for(y=125;y>0;y--);}}//標準的 for 嵌套循環

/***************************************************************************/

  • 上一篇:如何在VC\VB中建立和使用數據庫
  • 下一篇:地質勘探專家系統的意義和用途
  • copyright 2024編程學習大全網