?? test51.c.bak
字號:
#include <test51.h>
/**********************************************************************
函數功能: 定時器中斷函數(掃描鍵盤)(10ms 16位定時)
入口參數: 無
出口參數: 無
***********************************************************************/
void Time0_Func() interrupt 1
{
TH0=(0xffff-9259)/256;
TL0=(0xffff-9259)%256;
if (g_wTime)
{
g_wTime--;
}
Disp_Func();
}
/**********************************************************************
函數功能: 顯示刷新函數
入口參數: 無
出口參數: 無
***********************************************************************/
void Disp_Func(void)
{
P0=0xff; /*清除顯示*/
P0=g_bpDisp[g_bCurrent_Local];/*顯示段碼*/
if (g_bCurrent_Local)/*刷新DS2*/
{
Setb_Func(DS1_CS);
Clr_Func(DS2_CS);
g_bCurrent_Local=0;
}
else/*刷新DS1*/
{
Setb_Func(DS2_CS);
Clr_Func(DS1_CS);
g_bCurrent_Local=1;
}
P2=g_bP2_Io;/*更新P2口狀態*/
}
/**********************************************************************
函數功能: 清相應IO口函數(僅限中斷服務函數使用)
入口參數: bPort:相應IO口
出口參數: 無
***********************************************************************/
void Clr_Func(byte bPort)
{
bit btEa_Bak;
btEa_Bak=EA;
EA=0;
bPort =~ bPort;
g_bP2_Io &= bPort;
EA=btEa_Bak;
}
/**********************************************************************
函數功能: 置相應IO口函數(僅限中斷服務函數使用)
入口參數: bPort:相應IO口
出口參數: 無
***********************************************************************/
void Setb_Func(byte bPort)
{
bit btEa_Bak;
btEa_Bak=EA;
EA=0;
g_bP2_Io |= bPort;
EA=btEa_Bak;
}
/**********************************************************************
函數功能: 轉換顯示數據函數
入口參數: bDisp_Data 顯示數據0~99
bDisp_Break 閃爍位數0~2
出口參數: 無
***********************************************************************/
void Hex_To_Disp(byte bDisp_Data)
{
byte bI,bJ,bpDisp[2];
if (bDisp_Data<100)
{
bI=Bin_Bcd_Func((dword)bDisp_Data,bpDisp);/*二進制轉十進制*/
for (bJ=0; bJ<bI; bJ++)/*查找顯示段碼*/
{
bpDisp[bJ]=g_bpDisp_Seg[bpDisp[bJ]];
}
if (bI==1)
{ /*如果轉換十進制結果為一位,則將此位移到個位*/
Right_Move(bpDisp,1,1,g_bpDisp_Seg[0]);
}
while (g_bCurrent_Local);/*等待上次數據顯示完*/
ET0=0;
Init_Array_Func(2,g_bpDisp,0xff);
for ( bJ=0; bJ<2; bJ++)/*更新顯示數據*/
g_bpDisp[bJ]=bpDisp[bJ];
ET0=1;
}
}
/**********************************************************************
函數功能: 上電初始化函數
入口參數: 無
出口參數: 無
***********************************************************************/
void Power_Up(void)
{
TMOD = 0x01; /*Time0為16位定時器*/
TH0=(0xffff-9259)/256;
TL0=(0xffff-9259)%256;
IE=0x82; /*開啟定時器0中斷*/
TR0=1; /*運行定時器0*/
g_bP2_Io=0xff; /*將P2的IO口狀態數據復位*/
}
/**********************************************************************
函數功能: 主函數
入口參數: 無
出口參數: 無
***********************************************************************/
void main()
{
byte bTemp_L;/*DS18B20低8位數據*/
byte bTemp_H;/*DS18B20高8位數據*/
Power_Up();
while (1)
{
EA=0;
RW_TEMP();
EA=1;
bTemp_H=TEMPER_H;
bTemp_L=TEMPER_L;
bTemp_L &= 0xf0;
bTemp_H &= 0x07;
bTemp_L >>=4;
bTemp_H <<=4;
bTemp_L |= bTemp_H;
Hex_To_Disp(bTemp_L);/*顯示溫度*/
g_wTime=50;/*500毫秒延時*/
while (g_wTime);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -