历史上的今天
今天是:2025年12月27日(星期六)
2022年12月27日 | 89C51系列CPU编程器接收CPU程序
2022-12-27 来源:zhihu
#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;} } }
下一篇:E-1330点阵液晶屏驱动程序
史海拾趣
|
我们公司招聘WinCE软件开发工程师,要求如下: 经验要求: 1、电子工程、计算机等相关专业毕业,本科及以上学历 2、熟悉WINCE产品开发 3、有WINCE系统驱动程序开发经验者优先 具备技能: 1、英语四级以上水平 2、精通C/C++编程 3、熟悉操作 ...… 查看全部问答> |
|
我用app.vxe起serverRtp.vxe时,如果serverRtp编译成支持动态库(-Xdynamic)的话,serverRtp.vxe在跑一会后就是异常。(cnt大约4万多次,而且跟app.vxe中HEAP_MAX_SIZE大小有关系)。请问有哪位遇到过这种情况吗?是怎么解决的第一个RTP的代码(app.v ...… 查看全部问答> |
|
我刚新装的QuartusII,在下载里面显示No Hardware,点击Add Hardware提示kernel mode driver not installed,在网上找了半天,都解决不了,希望高人指点,小弟不胜感激 ~… 查看全部问答> |
|
TI LaunchPad精品课程学习资料收集---comparator_A的应用 如上图所示,比较器A大体可以分为5个模块。:输入,比较器A核心,低通滤波器,基准电压产生和中断部分。 与它有关的控制寄存器有:CACTL1,CACTL2,CAPD三个寄存器。 ...… 查看全部问答> |
|
有用TI的INA210AIDCKR这款电流监控芯片的吗?请问怎么用呢? 我在TI技术论坛上找到这个电路图,我仿照左边的图进行做板,可是AN0的输出不管IN+和IN-有没有接入电路输出都是5V,我甚至都不知道芯片是坏了还是没有工作,我重做了一块板子还是这样,只剩最后一片芯片了,求大神帮忙啊!! \0\0\0eeworldpostqq… 查看全部问答> |




