求程序解析(1/3)

#include <absacc.h>
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int

#define COM8255 XBYTE[0X060FF] /*命令字地址*/
#define PA8255 XBYTE[0X000FF] /*A口地址*/
#define PB8255 XBYTE[0X020FF] /*B口地址*/
#define PC8255 XBYTE[0X040FF] /*C口地址*/

sbit SPK=P1^0; //定义蜂鸣器端口
sbit DQ=P1^2; //ds18b20 端口
sbit gao=P1^4;
sbit jinbao1=P1^6;
sbit di=P1^5;
sbit jinbao2=P1^7;

unsigned char code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xFF};
uchar code poly[]={0xf7,0xfb,0xfd,0Xbf,0x7f};

uchar temp;
unsigned char Shiwei; //定义十位
unsigned char Gewei; //定义个位
uchar flag_get,count,num,minute,second;
uchar i,key,S,j;

uchar keyscan(void);
void delay1(uint i);
unsigned char ReadTemperature(void);
void Init_DS18B20(void);
unsigned char ReadOneChar(void);
void WriteOneChar(unsigned char dat);
void delay(unsigned int i);

/* 初始化1 */
void init(void)
{
TMOD|=0x01;//定时器设置
TH0=0xef;
TL0=0xf0;
IE=0x82;
TR0=0;
SPK=1;
gao=0;
di=0;
jinbao1=0;
jinbao2=0;
key=0;
Shiwei=0;
Gewei=0;
COM8255=0X88; //定义C口高四位输入、低八位为输出
}
希望有每句的解析,能详细就更好(此问题分成三部分)

#include <absacc.h>//要使用XBYTE来访问绝对地址需要包含absacc.h头文件
#include <reg51.h>//包含头文件REG51.h,使能51内部寄存器
#define uchar unsigned char //后面用uchar来代替unsigned char
#define uint unsigned int//后面用uint来代替unsigned int

#define COM8255 XBYTE[0X060FF] /*命令字地址*///后面若出现COM8255,则单片机端口P0和P2联合输出0X060FF绝对物理地址(地址指向82C55指令寄存器)
#define PA8255 XBYTE[0X000FF] /*A口地址*///后面若出现PA8255,则单片机端口P0和P2联合输出0X000FF绝对物理地址(地址指向82C55的A组端口寄存器)
#define PB8255 XBYTE[0X020FF] /*B口地址*///后面若出现PB8255,则单片机端口P0和P2联合输出0X020FF绝对物理地址(地址指向82C55的B组端口寄存器)
#define PC8255 XBYTE[0X040FF] /*C口地址*///后面若出现PC8255,则单片机端口P0和P2联合输出0X040FF绝对物理地址(地址指向82C55的C组端口寄存器)

sbit SPK=P1^0; //定义蜂鸣器端口
sbit DQ=P1^2; //ds18b20 端口
sbit gao=P1^4; //定义温度过高指示端口
sbit jinbao1=P1^6;
sbit di=P1^5;//定义温度过低指示端口
sbit jinbao2=P1^7;

unsigned char code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xFF};//数码管显示“段码表”,显示0-f
uchar code poly[]={0xf7,0xfb,0xfd,0Xbf,0x7f};//数码管“位码表”,分别使能5个数码管

uchar temp;//定义当前温度值的数值暂存器
unsigned char Shiwei; //定义温度设定值的十位数值暂存器
unsigned char Gewei; //定义温度设定值的个位数值暂存器
uchar flag_get,count,num,minute,second;
uchar i,key,S,j;

uchar keyscan(void);//函数申明
void delay1(uint i);//同上
unsigned char ReadTemperature(void);//同上
void Init_DS18B20(void);//同上
unsigned char ReadOneChar(void);//同上
void WriteOneChar(unsigned char dat);//同上
void delay(unsigned int i);//同上

/*******************
初始化1
********************/
void init(void)
{
TMOD|=0x01;//T0被设置为定时器,且工作在方式1模式下
TH0=0xef;//T0初值寄存器高位写入0XEF
TL0=0xf0;//T0初值寄存器低位写入0XEF
IE=0x82;//总中断允许,定时器T0中断允许
TR0=0;//关闭T0
SPK=1;//关闭喇叭
gao=0;//关闭温度过高指示端口
di=0;//关闭温度过低指示端口
jinbao1=0;//警报端口1清零
jinbao2=0;//警报端口2清零
key=0; //按键键值清零
Shiwei=0;//温度阀值十位显示0
Gewei=0;//温度阀值个位显示0
COM8255=0X88; //定义C口高四位输入、低八位为输出
//单片机送出指令0x88到指令寄存器
//物理地址和具体的接线有关系
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-09-20
#include <absacc.h>
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int

#define COM8255 XBYTE[0X060FF] /*命令字地址*/
#define PA8255 XBYTE[0X000FF] /*A口地址*/
#define PB8255 XBYTE[0X020FF] /*B口地址*/
#define PC8255 XBYTE[0X040FF] /*C口地址*/用到了8255,自己在网上找下资料看下,很多

sbit SPK=P1^0; //定义蜂鸣器端口
sbit DQ=P1^2; //ds18b20 端口
sbit gao=P1^4;
sbit jinbao1=P1^6;
sbit di=P1^5;
sbit jinbao2=P1^7;

unsigned char code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xFF};
uchar code poly[]={0xf7,0xfb,0xfd,0Xbf,0x7f};

uchar temp;
unsigned char Shiwei; //定义十位
unsigned char Gewei; //定义个位
uchar flag_get,count,num,minute,second;
uchar i,key,S,j;

uchar keyscan(void);
void delay1(uint i);
unsigned char ReadTemperature(void);
void Init_DS18B20(void);
unsigned char ReadOneChar(void);
void WriteOneChar(unsigned char dat);
void delay(unsigned int i);

/* 初始化1 */
void init(void)
{
TMOD|=0x01;//定时器设置,定时期0方式1
TH0=0xef;
TL0=0xf0;//定时器副计数初值
IE=0x82;
TR0=0;//启动定时器
SPK=1;
gao=0;
di=0;
jinbao1=0;
jinbao2=0;
key=0;
Shiwei=0;
Gewei=0;
COM8255=0X88; //定义C口高四位输入、低八位为输出
}

在楼主的另外个帖子里回过了,希望楼主看看,那个里定时器工作方式写错了,应该是方式0,再就是8255和18B20,资料网上有,都是中文的,写的很清楚,楼主可以多看看,18B20是温度传感器。也看看别人的程序是怎么写的。
第2个回答  2009-09-21
1212
第3个回答  2009-09-20
是单片机的吧
相似回答