历史上的今天
返回首页

历史上的今天

今天是:2025年01月12日(星期日)

2018年01月12日 | 读内部R/C时钟及ID号C语言参考程序

2018-01-12 来源:eefocus

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


推荐阅读

史海拾趣

Chipcon AS公司的发展小趣事

Chipcon AS公司深知人才是企业发展的核心力量。因此,公司一直注重人才的引进和培养。通过与高校和研究机构建立合作关系,公司吸引了大量优秀的研发人才加入。同时,公司还建立了完善的培训体系,为员工提供了广阔的职业发展空间。这些措施使得Chipcon AS公司的研发实力不断增强,为公司的持续发展提供了有力保障。

ELANTEC (Renesas )公司的发展小趣事

Renesas Electronics的前身可以追溯到1958年,当时日立制作所成立了半导体部门。随着技术的不断进步和市场的扩大,该部门逐渐发展壮大,成为日立公司内的一个重要业务部门。进入20世纪90年代,随着半导体市场的竞争加剧,日立公司决定将半导体业务独立出来,以便更加灵活地应对市场变化。1999年,日立半导体部门正式更名为ELANTEC,开始了独立发展的道路。

EDSYN公司的发展小趣事

随着智能能源市场的不断发展,Econais也积极拓展该领域的应用。通过与能源公司的合作,Econais的Wi-Fi模块被广泛应用于智能电网、智能家居和分布式能源管理等领域。这些应用不仅提高了能源利用的效率,也为用户带来了更加便捷和舒适的体验。Econais凭借其在超低功耗和高性能无线产品方面的技术优势,成功在智能能源市场占据了一席之地。

Bel Power Solutions公司的发展小趣事

Bel Power Solutions的创立源于对电源转换和管理技术的深刻理解和创新追求。公司创始人们看到了电力电子技术在各个行业领域的广阔应用前景,并决心打造一个专业、高效的电源解决方案提供商。然而,在创立初期,公司面临着资金短缺、技术难题以及市场竞争的严峻挑战。但创始人们凭借坚定的信念和不懈的努力,逐步攻克了技术难关,推出了首款电源转换产品,初步在市场上站稳了脚跟。

EnerSys公司的发展小趣事

作为一家具有社会责任感的企业,EnerSys积极参与社区回馈活动,并致力于可持续发展。公司不仅在业务上取得了显著成就,还通过参与各种公益活动,回馈社会。同时,EnerSys还关注环境保护和可持续发展问题,努力减少生产过程中的能源消耗和废物排放。这些举措不仅提升了EnerSys的品牌形象,也为公司的长远发展奠定了基础。

请注意,以上故事框架为概述性质,并未详细展开每个故事的细节。在实际撰写时,您可以根据这些框架进一步补充和完善具体内容。

启臣微(Chip)公司的发展小趣事

随着公司业务的不断发展,启臣微开始积极拓展海外市场。公司在西安设立研发中心,在深圳和昆山设立销售中心,并与多家国际知名企业建立了合作关系。这些举措不仅提升了公司的国际影响力,也为公司带来了更多的发展机遇。

问答坊 | AI 解惑

vhdl中数组的问题

别看程序长,只问两个小点, (1)下面的红色显示处,字母\'b\'可以去掉吗??? (2)下面的蓝色显示处,字母\'x\'是什么意思呢???可以去掉吗??? LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY alu IS   ...…

查看全部问答>

按键是否很少能用到查询方式?

一开始我用查询方式来读取按键 可是由于后面有delay();很大机会按键的时候在delay里读不出来 后来采用了中断,可是中断就这几个口,根本无法满足需求。。。 …

查看全部问答>

各位兄弟大家好,最近老大说让我看看DDK方面的资料,可能是要我做Windows Mobile或者Windows方面的驱动开发了,期望大家给点方向和资料什么的

各位兄弟大家好,最近老大说让我看看DDK方面的资料,可能是要我做Windows Mobile或者Windows方面的驱动开发了,期望大家给点学习的方向和电子版的资料什么的,我基础比较差一点,之前一直使用C++做win mobile 应用方面的开 ...…

查看全部问答>

初学驱动,学到一个函数,希望高手能帮忙解惑,听说标题要长。。。。。。。。。。。。。

Windows 下的驱动编程 有个函数 NTKERNELAPI NTSTATUS IoGetDeviceObjectPointer(   __in PUNICODE_STRING ObjectName,   __in ACCESS_MASK DesiredAccess,   __out PFILE_OBJECT *FileObject,  &nbs ...…

查看全部问答>

将模拟信号转换为数字信号,再把数字信号通过串口在终端读出数据!

我是一个单片机菜鸟,还没有入门,用的是ATmega128单片机,用PF2(ADC2)输入模拟信号,要写一个程序把模拟信号转换为数字信号并通过串口在终端显示出来转换后的数字信号信息,那位大侠帮帮忙,多谢!…

查看全部问答>

飞剪6RA70控制箱报F004故障

单位一台控制飞剪(切头切尾)的6RA70控制箱出现报F004故障,有时几个班出现一次,有时一个班出现几次。在这之前,出现过70箱面板无显示,于是更换了电源板(在原电源板进线电源和保险都正常的情况下,认为是电源板有问题),当时试车正常,但之后 ...…

查看全部问答>

有没有win7可以安装protel99se的升级版

我是WIN7的,安装了protel99se,但是我不可以开啊,老是说看看有没有升级版的啊,所以各位老大帮帮忙…

查看全部问答>

看了一下712的管脚的好象没有外部中断管脚

                                 看了一下712的管脚的好象没有外部中断管脚,除了710中的P2.8到P2.10是外部中断管脚。除了712中的capture,还有没有 ...…

查看全部问答>

12864

因学习需要,求购一块5v,可以串行并行的12864液晶屏一块。…

查看全部问答>

学习电子

我学习电子其实好坎坷,以前是学机电的,班上没一个女生,学着没味,之后听说电子的多,我转过来了,感觉电子更纠结,好难,希望在这论坛跟大家共同进步…

查看全部问答>