📄 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 + -