历史上的今天
返回首页

历史上的今天

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

2018年02月01日 | stc单片机读片外扩展RAM,内部R/C时钟及ID号C语言程序

2018-02-01 来源: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 
#define RELOAD_COUNT  0xfd   //11.0592MHz,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 data = 0; 
    unsigned  int  k = 0;    
     
    unsigned char xdata *xdata_point; 
     
//    unsigned char idata *idata_point; 

    serial_port_initial();      //串口初始化 
//    display_MCU_Start_Led();    //点亮发光二极管表示 单片机 开始工作 
//    send_UART(0x34);            //串口发送数据表示 单片机 串口正常工作 
//    send_UART(0xa7);            //串口发送数据表示 单片机 串口正常工作 

//    xdata_point = 0x400; 
    xdata_point = 0x0000; 
//    data = 0; 
    data = 0xff; 
    for(k=0;k<32768;k++) 
    { 
        *xdata_point = data; 
        xdata_point++; 
    } 


    xdata_point = 0x0000; 
    for(k=0;k<32768;k++) 
    { 
        i = 0; 
//        P0 = 0xFF; 
        i = *xdata_point; 
        send_UART(i); 
        xdata_point++; 
    } 
        
/*     
    for(j=0;j<255;j++) 
    { 
        *xdata_point = data; 
        data++; 
        xdata_point++; 
    } 

//    xdata_point = 0x400; 
    xdata_point = 0x7800; 
    for(j=0;j<255;j++) 
    { 
        i = 0; 
//        P0 = 0xFF; 

        i = *xdata_point; 

        send_UART(i); 

        xdata_point++; 
    } 

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


推荐阅读

史海拾趣

ABECO公司的发展小趣事

在1950年代的英国,ABECO的创始人凭借对电子行业的热爱和对手工工具的独特见解,开始了他的创业之路。初创时期,资金匮乏,人员稀少,但创始人凭借着对品质的执着和对创新的追求,不断研发出满足市场需求的高质量工具。他亲自走访客户,了解需求,不断完善产品,逐渐在电子行业中树立起了良好的口碑。

Analog Modules Inc公司的发展小趣事

随着全球化进程的加速推进,ABECO开始实施全球化战略。公司积极开拓国际市场,参加各类国际展会和论坛,与全球客户建立联系。同时,公司还加强与国际同行的交流与合作,引进先进的技术和管理经验。通过不断的努力,ABECO逐渐在全球电子行业中树立起了自己的品牌形象,成为了一家具有影响力的跨国公司。


请注意,上述故事是基于已知信息进行的虚构创作,并不代表ABECO公司的真实发展历程。如果您需要更详细和准确的信息,建议直接联系ABECO公司或查阅相关文献资料。

Hsuan Mao Technology Co公司的发展小趣事

在1950年代的英国,ABECO的创始人凭借对电子行业的热爱和对手工工具的独特见解,开始了他的创业之路。初创时期,资金匮乏,人员稀少,但创始人凭借着对品质的执着和对创新的追求,不断研发出满足市场需求的高质量工具。他亲自走访客户,了解需求,不断完善产品,逐渐在电子行业中树立起了良好的口碑。

EUCHNER公司的发展小趣事

随着全球化的发展,EUCHNER公司开始实施国际化战略,加强在全球市场的布局。公司在世界各地设立了多个分销处和办事处,以便更好地满足不同国家和地区的市场需求。同时,公司还积极与国际知名企业建立合作关系,共同推动工业自动化领域的进步。通过国际化战略和全球布局,EUCHNER公司的品牌影响力得到了进一步提升。

Burr-Brown公司的发展小趣事

2000年,Burr-Brown被著名的美国德州仪器公司(Texas Instruments)收购,成为其高性能模拟器件部门的一部分。这一收购为Burr-Brown提供了更强大的资源和支持,使其能够继续专注于模拟器件(如ADC、DAC等)的生产和创新。在德州仪器的引领下,Burr-Brown持续保持技术领先,为全球电子行业的发展做出了重要贡献。

这五个故事共同展现了Burr-Brown公司从创立到发展壮大的历程,以及其在电子行业中的卓越成就和持续创新的精神。通过不断适应市场变化和技术进步,Burr-Brown成功地在竞争激烈的电子行业中脱颖而出,成为一家备受尊敬的企业。

ELEMENT14公司的发展小趣事

为了满足全球客户的需求,ELEMENT14致力于构建和优化全球供应链。公司与多家国际知名电子元器件制造商建立了长期稳定的合作关系,确保了货源的稳定性和多样性。同时,ELEMENT14还建立了全球物流体系,实现了快速、准确的物流配送服务。这些措施不仅提升了客户满意度,也增强了公司在全球市场的竞争力。

问答坊 | AI 解惑

请各位高手指教,下面的电路能不能成立,不能成立的原因是什么?

电路是我自己画的,个人分析如下,有不对的地方希望大家指正:谢谢~ 1》通电,12V经R1到Q1的C极,经R2加至Q1的B极,Q1饱和导通,C极等于0 此时Q2,Q3,Q4的B极全部为0 Q2为PNP管,此时是导通状态,但对电路没影响 2》按S1, ...…

查看全部问答>

FM发射电路全集!!!

FM发射电路全集!!!…

查看全部问答>

单片机论坛

第二次免费开发板赠送,40mb 开发资料包:实例,原理图,keil 正式版,免费下载 第二次免费开发板赠送,40mb 开发资料包:实例,原理图,keil 正式版,免费下载下载50个单片机程序实例和开发板原理图,学林电子免费开发板暑期助学活动报名!暑假在家 ...…

查看全部问答>

6833的开发流程

请教各位大侠:   我近期在使用MT68332的单片机。请教一下开发流程。我使用的工具sds。我的笔记本没有并口。请教如何使用串口开发…

查看全部问答>

DXP里原理图转换WORD时候匡怎么去掉

请大家帮个忙!我在DXP 里画的原理图拷到WORD格式,不过原理图的外面的匡没法去掉,我就需要复制原理图,不要外面的匡和右下脚的匡,有什么办法只能把原理图复制过去呢! 谢谢你们了!…

查看全部问答>

eboot 中断只响应一次

我想在eboot中加入USB中断的方式下载功能。现在遇到这么一个问题,中断触发时,响应中断,进入中断处理函数,然后退出中断。等下一个中断到来时,就无法响应中断了。中断处理函数退出时,已经开了中断。也就是说,只响应一次中断,请问,这是什么原 ...…

查看全部问答>

wince 驱动开发 小问题?

wince下的驱动程序的编写是不是都可以用流驱动来做,, 我知道像键盘.显示.电源都是本机驱动... 想问一下打印机驱动可以用流驱动来做不??怎样实现与具体的硬件相连呢?…

查看全部问答>

DLL文件调试问题

我新学EVC,碰到一个很怪的问题(个人认为)。我在模拟器上调试我要调用的DLL文件,用TRACE宏写的语句在监视窗口可以看到,但在PDA上调试的时候却看不到,连设置的断点也进不去,但在模拟器下可以。试了很多方法都没用,希望各位大侠指点下小弟呀。…

查看全部问答>

F2812 的C编译器好像不分char和int都用一个16位来存储??

F2812 的C编译器好像不分char和int都用一个16位来存储??这岂不是很浪费? 比如 const unsigned char gImage_background[1000] = {。。。。} 我把.econst  分配在长度为0x200word(1024byte)的内存里,被告知: [Linking...] \\" ...…

查看全部问答>

使用ADC12测MSP430X149的供电电源的方法

将149的××cc与DVcc接到电源的正极,××ss接到负极,然后使用ADC12测试。程序如下; #include <msp430x14x.h> void main(void) { volatile unsigned int i; WDTCTL = WDTPW+WDTHOLD; ADC12CTL0 = ADC12ON+SH ...…

查看全部问答>