/*********************************************
* 程序名 * 读地址实验
* 公司名 * 石家庄芯巢科技
* 编写人 * 何新建
* 日 期 * 2013年2月25日
* 支 持 * STC12LE5608AD 外部11.0592MHZ晶振
* 接 口 * P1口高阻输入,读入状态确定地址号 端口高阻输入状态时是低电平0.21V,不接线读出0,如要读1,此端口直接接电源上
* 说 明 * 读出后由串口发出,串口小秘书查看正确否。实验通过(显示是十六进制)
*********************************************/
#include<STC12C5608AD.h>
#define uint unsigned int
uint a,b;//0~65535全局变量,定义1个可以使用本句,两个就要使用上面第二条宏定义
sbit DZ1=P1^0;
sbit DZ2=P1^1;
sbit DZ3=P1^2;
sbit DZ4=P1^3;//从机地址修改读入端口
uint xdata localAddr;//从机地址
/***************************************
P1口初始化
***************************************/
void P0_DZ()//单片机地址设定子函数
{
P1M0=0x0f;//0x0f,P1.0-P1.3高阻输入。0xf0时P1.4-P1.7高阻输入
P1M1=0x00;//
//localAddr=P0;
}
/********************************
*串行口通讯初始化*
********************************/
void initialize()//完成51初始化工作串行通信波特率初始化程序
{
TMOD=0x20;//00100000设定定时器/计数器1,定时、方式2 1位起始位 8位数据 1位停止
TH1=0xfd; //FD波特率初值9600
TL1=0xfd; //FD波特率重新装入值9600
TR1=1; //启动定时器/计数器1
SCON=0x50; //01010000设置串行通信方式1 REN=1允许接收
PCON=0x00; //设置SMOD=0
}
/**********************************
主函数
***********************************/
void main()
{
P0_DZ();//调用P1口初始化子函数
initialize();//调用串行口初始化函数
while(1)
{
while(!RI);//等待接收标志位RI=1
a=SBUF;//接收寄存器送接收缓冲区数组
RI=0; //接收标志位清零
localAddr=P1;
SBUF=localAddr;//变量值送串行口发送寄存器
while(!TI);//等待发送完成标志位TI=1
TI=0;//清零发送标志位
}
}
|