历史上的今天
今天是:2025年04月06日(星期日)
2021年04月06日 | 89C51编程器端驱动程序的例子
2021-04-06 来源:eefocus
简介:本文提供给大家一个89C51编程器端驱动程序的例子
/* 89C51系列CPU编程器接收CPU程序*/
#include #include #include #define e 8 #define p 9 #define l 10 sbit led=P3^2; sbit p27=P2^7; sbit p26=P2^6; sbit p36=P3^6; sbit p37=P3^7; sbit rst=P3^3; sbit ale=P3^5; sbit vpp=P3^4; bit b_break; unsigned int adds; // // 13.8mS void int_t0(void) interrupt 1 { TH0=-100; b_break=1; } void wait(unsigned char w) { unsigned int t=w*184; b_break=0; TL0=-t%256-1;TH0=-t/256; while (b_break==0) {} } void nop(void) { _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); } unsigned char command(void) { TH0=-100;b_break=0; while (RI==0) {if (b_break==1) return(0);} RI=0; return(SBUF); } void earsure(unsigned char cpu) { switch (cpu) { case 1: //89C51 case 2:rst=p26=1;p27=p36=p37=0;nop();vpp=1;nop(); ale=0;wait(110);ale=1;nop(); break; case 3: case 4:break; case 5: case 6:break; } } void program(unsigned char cpu) { unsigned int bdata adds=0; unsigned char d; switch (cpu) { case 1: //89C51 case 2: p36=p37=1;rst=1; while (1) { TH0=-100;b_break=0; while (RI==0) {if (b_break==1) return;} RI=0; d=SBUF; //address P0=adds%256; P2=adds/256; p27=1; //data P1=d; nop(); //48clcl //vpp vpp=1; nop(); //48clcl //ale ale=0; wait(1);//100uS ale=1; nop(); //10uS vpp=0; nop(); //48clcl p27=0; nop(); //48clcl P1=0xff; TH0=-100;b_break=0; while (d!=P1) {if (b_break==1) return;} //data polling SBUF=d; adds++; } break; case 3: case 4: case 5: case 6:break; } } void lock(unsigned char cpu) { unsigned char i; switch (cpu) { case 1: //89c51 case 2: //lock 1 rst=p26=p36=p27=p37=1;nop(); vpp=1; nop(); ale=0; // for (i=0;i<6;i++) wait(100); wait(1); ale=1; nop(); vpp=0; nop(); //lock 2 rst=p26=p27=1;p36=p37=0;nop(); vpp=1; nop(); ale=0; // for (i=0;i<6;i++) wait(100); wait(1); ale=1; nop(); vpp=0; nop(); //lock 3 rst=p26=p36=1;p27=p37=0;nop(); vpp=1; nop(); ale=0; // for (i=0;i<6;i++) wait(100); wait(1); ale=1; nop(); vpp=0; nop(); break; case 3: case 4: case 5: case 6:break; } } void main(void) { unsigned char disp,flash,temp,cpu; EA=1; SCON=0xd8;PCON=0x80; TMOD=0x21; TL1=TH1=0xff;TR1=1; TH0=-100;ET0=TR0=1; flash=0x80; while (1) { temp=command(); switch (temp) { case 0: case 1: //89c51 case 2: //89C52 case 3: //80f51 case 4: //80F52 case 5: //87F51 case 6:cpu=temp;SBUF=temp;break;//87f52 case e:SBUF=temp;earsure(cpu);break; //erasure case p:SBUF=temp;program(cpu);break; //program case l:lock(cpu);SBUF=temp;break; //lock default:SBUF=temp;break; } b_break=0; if ((++disp)>flash) {disp=0;led=!led;} } }
下一篇:矩阵键盘C语言程序设计
史海拾趣
|
随着金融业务的蓬勃发展,银行业务发展迅速,用户呈几何数量不断攀升。如何为规模庞大的准用户群提供更好、更便捷的服务?如何针对不断增长的新用户群提供最新、最全面的银行服务推荐?如何应对来自国内银行、外资银行的竞争,提高知名度和用户忠诚 ...… 查看全部问答> |
|
CPU: 从CPU诞生的那一天起,其封装技术就经历了多种变化。直到Pentium时代,封装形式才基本上稳定下来。80X86系列的CPU从8088开始经历了DIP、PQFP、PFP、PGA、BGA等多种在集成电路芯片中使用过的封装技术,其技术性能越来越强,适应的工作频率越 ...… 查看全部问答> |
|
1_Cortex-M3支持的Thumb-2指令 2_Stellaris产品选型工具 3_LM3S系列Protel元件库 4_Stellaris外设驱动库用户指南 5_API函数介绍 6_I2C总线协议 … 查看全部问答> |
|
我的这台卓异5518G(绿色外壳)是7针升级接口的,是海尔2023+1108EGa+5812的,看 了好多论坛都没有能找到直接在遥控器上就可以输入密码升级的资料以及具体的操作方法,。自己又不懂制作这种机型接口的什么升级数据线和什么小版的,希望论坛里各位高 ...… 查看全部问答> |
|
请教如何“建立winCE的软件开发工具包(SDK)并把BSP打包到.msi安装文件” 开发BSP的最后一步是建立软件开发工具包(SDK)并把BSP打包到.msi安装文件里这样它就可以被其他人安装。SDK是开发者用来为某个OS编写应用程序的一系列头文件,库,相关联的文件,运行时文件,OS扩展和帮助文档。SDK的内容允许开发者在你的OS得运行 ...… 查看全部问答> |
|
如题: 硬件为EPM570T100C5N的开发板。实现不了小灯闪烁功能,可以单独对小灯进行控制(只可以控制亮灭,不能控制闪烁),不知道什么原因,特来请教大家。以下是程序部分:module LEDxiaodeng(CLK,LED);input CLK;output [8:1]LED;re ...… 查看全部问答> |
|
资料中所说:IVDD Total current into VDD/VDDA power lines (source)IVSS Total current out of VSS ground lines (sink)两者最大值均为150mA那我就郁闷了...目 ...… 查看全部问答> |
|
【低功耗】Actel IGLOO系列超低功耗,小封装FPGA下载 Actel IGLOO系列超低功耗,小封装FPGA下载Actel IGLOO Family Represents the True Alternative to ASICsand CPLDsfor Portable Applications5 μW static power in Flash*Freeze Mode4 X less static power than nearest competitor5 X longer batt ...… 查看全部问答> |




