c语言程序id地址吗,读内部R/C时钟及ID号C语言参考程序

读内部R/C时钟及ID号C语言参考程序

来源:--

作者:--

浏览:374

时间:2016-08-10 14:18

标签:

摘要:

#include #include sfr  IAP_CONTR =  0xC7; sbit MCU_Start_LED  =  P1^7; //unsigned char self_command_array[4]

#include

#include

sfr  IAP_CONTR =  0xC7; sbit MCU_Start_LED  =  P1^7;

//unsigned char self_command_array[4] =  {0x22,0x33,0x44,0x55};

#define Self_Define_ISP_Download_Command  0x22

#define RELOAD_COUNT  0xfb   //18.432MHz,12T,SMOD=0,9600bps void serial_port_initial();

void send_UART(unsigned char);

void UART_Interrupt_Receive(void);

void SOFt_reset_to_ISP_Monitor(void);

void delay(void);

void display_MCU_Start_Led(void); void main(void)

{

unsigned  char i = 0;

unsigned  char j = 0;     unsigned char idata *idata_point;     serial_port_initial();      //串口初始化

//    display_MCU_Start_Led();    //点亮发光二极管表示 单片机 开始工作

//    send_UART(0x34);            //串口发送数据表示 单片机 串口正常工作

//    send_UART(0xa7);            //串口发送数据表示 单片机 串口正常工作

idata_point = 0xF1;

for(j=0;j<15;j++)

{

i = *idata_point;

send_UART(i);

idata_point++;

}     while(1);

} void serial_port_initial()

{

SCON    =   0x50;   //0101,0000 8位可变波特率,无奇偶校验位

TMOD    =   0x21;   //0011,0001 设置顶时器1为8位自动重装计数器

TH1     =   RELOAD_COUNT;   //设置定时器1自动重装数

TL1     =   RELOAD_COUNT;

TR1     =   1;    //开定时器1

ES      =   1;    //允许串口中断

EA      =   1;    //开总中断

} void send_UART(unsigned char i)

{

ES     =   0;  //关串口中断

TI     =   0;  //清零串口发送完成中断请求标志

SBUF   =   i;

while(TI ==0); //等待发送完成

TI     =   0;  //清零串口发送完成中断请求标志

ES     =   1;  //允许串口中断

} void UART_Interrupt_Receive(void) interrupt 4

{

unsigned char   k   =   0;

if(RI==1)

{

RI  =   0;

k   =   SBUF;

if(k==Self_Define_ISP_Download_Command)   //是自定义下载命令

{

delay();    //延时1秒就足够了

delay();    //延时1秒就足够了

soft_reset_to_ISP_Monitor();    //软复位到系统ISP监控区

}

send_UART(k);

}

else

{

TI  =  0;

}

} void soft_reset_to_ISP_Monitor(void)

{

IAP_CONTR   =    0x60;   //0110,0000   软复位到系统ISP监控区

} void delay(void)

{

unsigned int j  =   0;

unsigned int g  =   0;

for(j=0;j<5;j++)

{

for(g=0;g<60000;g++)

{

_nop_();

_nop_();

_nop_();

_nop_();

_nop_();

}

}

}

void display_MCU_Start_Led(void)

{

unsigned  char i = 0;

for(i=0;i<3;i++)

{

MCU_Start_Led   =   0;  //顶亮MCU开始工作指示灯

delay();

MCU_Start_Led   =   1;  //熄灭MCU开始工作指示灯

delay();

MCU_Start_Led   =   0;  //顶亮MCU开始工作指示灯

}

}

分享到:

eb16ac850798d72e084e2c3ed33ff707.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值