?? test51.c
字號(hào):
/*
****************************************************************************************************
* 沈陽(yáng)市萬(wàn)柳塘路56號(hào)
* (c)著作權(quán)2005,世信匯誠(chéng)電子版權(quán)所有
* 世信匯誠(chéng)電子的源代碼是不公開(kāi), 屬于世信匯誠(chéng)電子的企業(yè)機(jī)密文件, 任何未經(jīng)允許使用
* 或發(fā)表的行為都是違法行,任何個(gè)人或組織嘗試或者參與修改源代碼的行為,都應(yīng)盡早得到世信
* 匯誠(chéng)電子設(shè)計(jì)組的同意.
*
* 版本號(hào):1.0
* 作 者:linan4526
* 日 期:2005-05-08
*---------------------------------------------------------------------------------------------------
* 描 述:SXHC-I型MCU51實(shí)驗(yàn)
****************************************************************************************************
*/
#include <test51.h>
/**********************************************************************
函數(shù)功能: 定時(shí)器中斷函數(shù)(掃描鍵盤(pán))(10ms 16位定時(shí))
入口參數(shù): 無(wú)
出口參數(shù): 無(wú)
***********************************************************************/
void Time0_Func() interrupt 1
{
TH0=(0xffff-9259)/256;
TL0=(0xffff-9259)%256;
if (g_wTime)
{
g_wTime--;
}
Disp_Func();
}
/**********************************************************************
函數(shù)功能: 顯示刷新函數(shù)
入口參數(shù): 無(wú)
出口參數(shù): 無(wú)
***********************************************************************/
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口狀態(tài)*/
}
/**********************************************************************
函數(shù)功能: 清相應(yīng)IO口函數(shù)(僅限中斷服務(wù)函數(shù)使用)
入口參數(shù): bPort:相應(yīng)IO口
出口參數(shù): 無(wú)
***********************************************************************/
void Clr_Func(byte bPort)
{
bit btEa_Bak;
btEa_Bak=EA;
EA=0;
bPort =~ bPort;
g_bP2_Io &= bPort;
EA=btEa_Bak;
}
/**********************************************************************
函數(shù)功能: 置相應(yīng)IO口函數(shù)(僅限中斷服務(wù)函數(shù)使用)
入口參數(shù): bPort:相應(yīng)IO口
出口參數(shù): 無(wú)
***********************************************************************/
void Setb_Func(byte bPort)
{
bit btEa_Bak;
btEa_Bak=EA;
EA=0;
g_bP2_Io |= bPort;
EA=btEa_Bak;
}
/**********************************************************************
函數(shù)功能: 轉(zhuǎn)換顯示數(shù)據(jù)函數(shù)
入口參數(shù): bDisp_Data 顯示數(shù)據(jù)0~99
bDisp_Break 閃爍位數(shù)0~2
出口參數(shù): 無(wú)
***********************************************************************/
void Hex_To_Disp(byte bDisp_Data)
{
byte bI,bJ,bpDisp[2];
if (bDisp_Data<100)
{
bI=Bin_Bcd_Func((dword)bDisp_Data,bpDisp);/*二進(jìn)制轉(zhuǎn)十進(jìn)制*/
for (bJ=0; bJ<bI; bJ++)/*查找顯示段碼*/
{
bpDisp[bJ]=g_bpDisp_Seg[bpDisp[bJ]];
}
if (bI==1)
{ /*如果轉(zhuǎn)換十進(jìn)制結(jié)果為一位,則將此位移到個(gè)位*/
Right_Move(bpDisp,1,1,g_bpDisp_Seg[0]);
}
while (g_bCurrent_Local);/*等待上次數(shù)據(jù)顯示完*/
ET0=0;
Init_Array_Func(2,g_bpDisp,0xff);
for ( bJ=0; bJ<2; bJ++)/*更新顯示數(shù)據(jù)*/
g_bpDisp[bJ]=bpDisp[bJ];
ET0=1;
}
}
/**********************************************************************
函數(shù)功能: 上電初始化函數(shù)
入口參數(shù): 無(wú)
出口參數(shù): 無(wú)
***********************************************************************/
void Power_Up(void)
{
TMOD = 0x01; /*Time0為16位定時(shí)器*/
TH0=(0xffff-9259)/256;
TL0=(0xffff-9259)%256;
IE=0x82; /*開(kāi)啟定時(shí)器0中斷*/
TR0=1; /*運(yùn)行定時(shí)器0*/
g_bP2_Io=0xff; /*將P2的IO口狀態(tài)數(shù)據(jù)復(fù)位*/
}
/**********************************************************************
函數(shù)功能: 主函數(shù)
入口參數(shù): 無(wú)
出口參數(shù): 無(wú)
***********************************************************************/
void main()
{
byte bTemp_L;/*DS18B20低8位數(shù)據(jù)*/
byte bTemp_H;/*DS18B20高8位數(shù)據(jù)*/
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毫秒延時(shí)*/
while (g_wTime);
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -