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

2018-01-12 21:07:28编辑:什么鱼 关键字:内部R  C时钟  ID号

#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开始工作指示灯 
    } 


关键字:内部R  C时钟  ID号

来源: eefocus 引用地址:http://www.eeworld.com.cn/mcu/article_2018011237334.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:51单片机+18B20显示程序+74HC164扩展显示数码管
下一篇:集约型51系统板输出通道的改进设计

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

stc单片机读片外扩展RAM,内部R/C时钟及ID号C语言程序

#include<reg51.h> #include<intrins.h> 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 &n
发表于 2018-02-01 19:25:58

S3C2440上RTC时钟驱动开发实例讲解

(rtc_base);  err_nomap:     release_resource(rtc_mem);  err_nores:     return ret; } /*该函数主要是初始化或者使能RTC,   以下RTC的各种寄存器的宏定义在arch/arm/plat-s3c/include/plat/regs-rtc.h中,   各寄存器的用途和设置请参考S3C2440数据手册的第十七章实时时钟部分*/ static void
发表于 2016-05-05 17:00:33

MSP430F449单片机RTC时钟C语言程序(带闹钟)

功能: 实现软件万年历功能,并自动识别闰年,A屏每显示5秒种就自动切换到B屏,B屏再显示5秒种就自动切换到C屏,C屏再显示5秒种就自动切换到A屏,通过按键在A屏、B屏和C屏之间切换 ,可通过按键手动设定和调整时间,当调整时对应调整位要有闪烁功能,有闹钟功能,可设置几点几分闹钟,当前时间等于闹钟时间时,用点亮LED指示,直到某个键(自定义)被按下时,熄灭LED灯  ***************************************************/    #include  <msp430x44x.h> 
发表于 2015-09-08 18:38:09

STM32通过读取芯片唯一ID号来实现程序的保护,防止被抄袭

1、STM32实验连载之四:读取芯片唯一ID号 ----http://blog.sina.com.cn/s/blog_b1ed84120101fmlo.html2、【STM32F4】读取芯片ID和芯片Flash Size----https://www.cnblogs.com/zyqgold/p/3378993.html3、STM32读芯片ID号----https://download.csdn.net/download/jonahan001/53428894、如何读取STM32的唯一ID----https://blog.csdn.net/u012388993/article/details/714250635
发表于 2018-05-20 10:25:55
STM32通过读取芯片唯一ID号来实现程序的保护,防止被抄袭

基于STM32F103的ID号对应用程序的保护方法

        由于现在市场激烈竞争、混乱的市场机制及已失去的市场道德,迫使在产品设计时,必需要考虑到对产品的保护,以防产品的技术被第三方所用。无论是从硬件方面来保护,还是从软件方面来保护,都无法保证产品100%的安全。由于嵌入式系统的特点就是软件、硬件相结合,才具有实际的意义,失去任何一个平台都是废品一堆,因此将系统的软件、硬件结合起来对产品进行加密保护,可靠性会大大地增加。STM32F103系列ARM处理器芯片就内置了唯一的96位ID号,同时也有以后备电池为电源的SRAM,还有入侵检测(打开机壳等)功能,以提供这方面的应用需求。因此可以有几种产品保护的方法:1、  
发表于 2017-02-06 14:59:54

STC系列单片机ID号的读取

//读ID号C语言参考程序 ...  idata_point = 0xF1;   //MCU 出厂序列号如: 0006008B002CE6  for(j=0;j<15;j++)     //                  {   i = *idata_point;   //ID内容   
发表于 2016-03-23 10:34:23

小广播

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2018 EEWORLD.com.cn, Inc. All rights reserved