c51為啥要巨集定義時鐘 c51時鐘

2021-10-13 11:44:34 字數 2027 閱讀 1921

程式效果:時鐘,包括時間可調,定時到了鬧鐘響,用蜂鳴器,本程式已經除錯通過

喇叭接在p2.0上.埠均可自行更改.

#include //標頭檔案

#include

#define uchar unsigned char//巨集定義

#define uint unsigned int

sbit key1=p3^5; //位宣告

sbit key2=p3^6;

sbit key3=p3^7;

sbit fmq=p2^0;

uchar code table=;

void jia(); //函式宣告

void jian();

uchar table_1[6]; //定義陣列,陣列內含有6個數值

uchar table_2[6];

uchar shi=23,fen=59,miao=50; //顯示初始值

uchar shi1,fen1,miao1,shi2,fen2,miao2,shi3,fen3,miao3;//定義全域性變數

uchar flag,flag1,cnt,count;//定義全域性變數

void delay(uchar i) //延時函式,用於動態掃瞄數碼管

uchar x,y;

for(x=i;x>0;x--)

for(y=110;y>0;y--);

void init() //初始化函式

tmod=0x01; //工作方式1

th0=(65536-50000)/256; //定時時間為:50ms

tl0=(65536-50000)%256;

et0=1; //開啟定時器

ea=1; //開總中斷

tr0=1; //啟動定時器

void display() //顯示子函式,用於顯示時間數值

uchar i,j;

table_1[0]=miao%10; //分離秒的各位與十位

table_1[1]=miao/10;

table_1[2]=fen%10+11; //分離分的各位與十位

table_1[3]=fen/10;

table_1[4]=shi%10+11; //分離時的各位與十位

table_1[5]=shi/10;

j=0x7f; //從秒到時的掃瞄

for(i=0;i<6;i++)

p2=j;

p0=table[table_1[i]];//顯示數值

delay(10);

j=_cror_(j,1);//迴圈右移

void display_1() //顯示子函式,用於顯示定時時間

uchar i,j;

table_2[0]=miao2%10; //以下含義同上

table_2[1]=miao2/10;

table_2[2]=fen2%10+11;

table_2[3]=fen2/10;

table_2[4]=shi2%10+11;

table_2[5]=shi2/10;

j=0x7f;

for(i=0;i<6;i++)

p2=j;

p0=table[table_2[i]];

delay(10);

j=_cror_(j,1);

void shijian() //時間子函式

if(flag>=20) //判斷是否到一秒

flag=0; //到了,則標誌位清零

miao++; //秒加1

if(miao>=60) //判斷秒是否到60s

miao=0;//到了,則清零

fen++; //分加1

if(fen>=59) //以下含義同上

fen=0;

shi++;

if(shi>23)

shi=0;

void key_scan() //鍵盤掃瞄子函式

uchar i; //定義區域性變數

if(key1==0)

while(!key1) //防止掉顯

if(cnt=

c51為啥要巨集定義時鐘 51微控制器時鐘實訓報告

時 分 秒計時器設計 一 任務及要求 用微控制器設計時 分 秒計時器,具體要求如下。具有時 分 秒計時功能和 位數碼管顯示功能,顯示格式為 時 分 秒 用proteus 設計 電路進行結果 人組成設計小組完成,小組成員有明確分工,人負責總體方案設計及報告撰寫,人負責功能模組函式設計,人負責 電路設計...

C51中預定義巨集

cx51編譯器提供了下列預定義的常量,它使你可以用預處理器指令和c 來建立可移植程式。常量 說明 型別 c51 c51編譯器的版本號 例如,810代表版本8.10 數值 cx51 cx51編譯器的版本號 例如,810代表版本8.10 目前該預定義巨集已經被取消。數值 date 當編譯開始時的ansi...

C51用巨集定義代替printf函式

有時候我們想用巨集定義來決定是編譯debug版本的 還是release的 dubug版本的 會通過printf列印除錯資訊,release版本的 則不會。我們總不能對每一條printf都這樣寫 if debug printf hello world endif這樣子實在是太麻煩了!萬一要各個地方都要...