久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 7405|回復(fù): 7
打印 上一主題 下一主題
收起左側(cè)

AT89C51單片機(jī)簡(jiǎn)易在線編程實(shí)現(xiàn)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
AT89C51簡(jiǎn)易在線編程

問(wèn)題:
AT89C51一般只能在專業(yè)編程器上燒錄,每次改動(dòng)程序,要從目標(biāo)板上撬下芯片,燒錄后再插上運(yùn)行。我的燒錄器TOP851軟件只能在XP上運(yùn)行,還要再開(kāi)一個(gè)電腦,實(shí)在是很麻煩。
怎樣實(shí)現(xiàn)在線編程呢?麻煩的是AT89C51沒(méi)有SPI口,如果在編程器上做文章,需要很多口線。
我的要求是,PC機(jī)通過(guò)串口對(duì)AT89C51目標(biāo)板編程。

思路:
AT89C51EA(31)可以選擇執(zhí)行片內(nèi)程序(H,還是片外程序(L,我們就可以控制這個(gè)引腳,實(shí)現(xiàn)“在線編程”。
1、編程。先設(shè)置為EA=H,片內(nèi)程序接收串口程序數(shù)據(jù),并將此寫(xiě)到目標(biāo)板片外數(shù)據(jù)存儲(chǔ)器起始地址為0X8000的地方。
2、運(yùn)行。不斷電,設(shè)置EA=L, 按一下目標(biāo)板復(fù)位鍵,片外數(shù)據(jù)存儲(chǔ)器變成了片外程序存儲(chǔ)器,從這個(gè)片外程序存儲(chǔ)器的0X0000地址開(kāi)始運(yùn)行。
這就實(shí)現(xiàn)了“在線編程”。

要點(diǎn):
看到這里,你可以發(fā)現(xiàn)兩個(gè)問(wèn)題,這也就是本方案的“精華”。
1、片外數(shù)據(jù)存儲(chǔ)器變成了片外程序存儲(chǔ)器?AT89C51片外數(shù)據(jù)存儲(chǔ)器和片外程序存儲(chǔ)器始終地址都是0X0000--0XFFFF,區(qū)分在PSEN29腳)為片外程序存儲(chǔ)器讀信號(hào),RD(17)為片外數(shù)據(jù)存儲(chǔ)器讀信號(hào),這兩個(gè)信號(hào)不會(huì)同時(shí)出現(xiàn),本方案把這兩個(gè)信號(hào)線連在一起,接到片外數(shù)據(jù)存儲(chǔ)器(我使用的是6225622腳(讀控制),很多資料說(shuō)要用一個(gè)與門,別信他的,我試驗(yàn)過(guò),直接連上就可以。在今后的實(shí)驗(yàn)中,這個(gè)空間使用要小心,不要把程序覆蓋了。如果把這個(gè)信號(hào)用開(kāi)關(guān)切換,就沒(méi)有限制了,我這是懶人懶法。
2、程序?qū)懺谄鈹?shù)據(jù)存儲(chǔ)器起始地址為0X8000的地方(應(yīng)該0X0000也行,我沒(méi)有試過(guò)),執(zhí)行的時(shí)候又從片外程序存儲(chǔ)器的0X0000地址開(kāi)始運(yùn)行?
為了省掉地址譯碼器,62256片選(29腳)直接接地,存儲(chǔ)器地址就是0X0000--0X7FFF,重復(fù)地址是0X8000--0XFFFF
用下邊的測(cè)試程序,片內(nèi)片外運(yùn)行成功。

硬件改造歸納如下:
1、找一個(gè)現(xiàn)成的應(yīng)用板,AT89C51帶片外數(shù)據(jù)存儲(chǔ)器,帶串口轉(zhuǎn)換接口。
2、連接AT89C51PSEN29腳)和RD(17)
3、編程運(yùn)行轉(zhuǎn)換開(kāi)關(guān),單刀雙擲,中間是AT89C51EA(31),一邊接電源+極,一邊接地。

下段要編寫(xiě)兩個(gè)程序,一是PC機(jī)發(fā)送HEX文件,一邊是AT89C51接收處理HEX文件數(shù)據(jù),并寫(xiě)到片外數(shù)據(jù)存儲(chǔ)器。


#include<AT89x51.H>

unsigned  char  code  *pic; //讀程序區(qū)
unsigned  char  xdata  *pid; //寫(xiě)外存數(shù)據(jù)
void code_xdata()
{  char x;
        pic=0x0000;
        pid=0x8000;

        for(x=0;x<0x60;x++)
            {
          *(pid+x)=*(pic+x);
                  }
}
////////////////////////////////
void main()
{  
    char x,y;  
                  P1=0X05;
     code_xdata();
         while(1)
         {
            
       for(x=240;x>0;x--)
       for(y=210;y>0;y--);

          P1^=0x0f;
         }

}

全部程序51hei下載地址:
試驗(yàn).zip (4.16 KB, 下載次數(shù): 19)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏6 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:716413 發(fā)表于 2020-4-16 06:58 | 只看該作者
寫(xiě)入片外數(shù)據(jù)存儲(chǔ)器起始地址為0X0000是一樣的。
HEX文件處理太麻煩,用HEX2BIN.EXE轉(zhuǎn)換為BIN文件(程序內(nèi)存映像文件,什么附加也沒(méi)有),用超級(jí)終端發(fā)送,每寫(xiě)一個(gè)字節(jié),又讀出發(fā)送回來(lái)。
試驗(yàn)完成!

#include<AT892051.H>

//UART init
void initUart(void)
{
TMOD|=0x20;
SCON=0x50;
PCON|=0x80;
TH1=0xfa;
TL1=0xfa;
TR1=1;
ES=1;                  //串口中斷許可
}
//////////////////////////////////////uart interrupt////////////

unsigned  char  xdata  *xpi; //寫(xiě)外存地址

//uart interrupt
void uart(void) interrupt 4
{
        if(RI)
        {
    RI=0;
        //add your code here.
        *xpi = SBUF;                //接收到數(shù)據(jù)
        SBUF=*xpi;                 // 數(shù)據(jù)發(fā)送回PC
        xpi++;
}
else
    TI=0;
}
////////////////////////the main fun/////////
void main(void)
{
        initUart();
        xpi=0x0000;                    //寫(xiě)外存地址
        EA=1;                         //總中斷許可

          while(1){;}
}



回復(fù)

使用道具 舉報(bào)

板凳
ID:716103 發(fā)表于 2020-4-16 10:32 | 只看該作者
這種一斷電,SRAM中的程序就沒(méi)有了。當(dāng)然可以采用外部電池來(lái)保持SRAM中的內(nèi)容。
回復(fù)

使用道具 舉報(bào)

地板
ID:716103 發(fā)表于 2020-4-16 10:34 | 只看該作者
其實(shí)原來(lái)ATMEL,現(xiàn)在MicroChip的AT89S52是支持PC串口或并口編程的。是真正的燒錄到AT89S52中,掉電不失的那種。
回復(fù)

使用道具 舉報(bào)

5#
ID:716413 發(fā)表于 2020-4-16 15:26 | 只看該作者
這個(gè)適合于編程實(shí)驗(yàn),很方便,我現(xiàn)在就用這個(gè)。
應(yīng)用當(dāng)然燒錄好。
回復(fù)

使用道具 舉報(bào)

6#
ID:716413 發(fā)表于 2020-4-17 21:22 | 只看該作者
今天發(fā)現(xiàn)傳送程序不穩(wěn)定,字節(jié)忽多忽少。
多方查找不是波特率高了的問(wèn)題,原因在于超級(jí)終端只管發(fā),有時(shí)前后字節(jié)搞串了。
把超級(jí)終端設(shè)為2個(gè)停止位就好了。
回復(fù)

使用道具 舉報(bào)

7#
ID:716413 發(fā)表于 2020-4-18 22:28 | 只看該作者
一定要按住復(fù)位鍵,撥動(dòng)編程運(yùn)行切換開(kāi)關(guān)。切換時(shí),有不確定因素,可能改寫(xiě)了數(shù)據(jù),先按住復(fù)位鍵,就不會(huì)改動(dòng)了,松開(kāi)就運(yùn)行。
回復(fù)

使用道具 舉報(bào)

8#
ID:137736 發(fā)表于 2020-5-17 21:49 來(lái)自觸屏版 | 只看該作者
可行,轉(zhuǎn)換開(kāi)關(guān)最好用門電咯
回復(fù)

使用道具 舉報(bào)

9#
無(wú)效樓層,該帖已經(jīng)被刪除

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产午夜精品一区二区三区四区 | 日日操av| 成人二区 | 欧美日韩亚洲一区 | 日本a视频 | 国产精品久久久久久久久免费高清 | 天天综合天天 | 欧美一级免费观看 | 在线免费国产视频 | 在线日韩 | 日本精品一区 | 免费三级网 | 黄色片视频 | 国产精品久久精品 | 成人网av| 国产精品久久一区 | 欧美日韩高清免费 | 日本久久一区二区三区 | 国产精品视频不卡 | 日韩精品一区二区三区 | 精品国产乱码久久久久久图片 | 午夜a v电影 | 免费成人在线网 | 精品99在线 | 国产一区二区在线免费观看 | 日本韩国电影免费观看 | 久久精品免费 | 国产成人精品一区二区三区视频 | 欧美视频成人 | 精精国产xxxx视频在线野外 | 午夜爱爱毛片xxxx视频免费看 | 成av在线| 爱高潮www亚洲精品 中文字幕免费视频 | 久久精品免费 | 日韩在线观看一区二区三区 | 久久久久国产精品 | 91观看| 黄 色 毛片免费 | 亚洲精品在线视频 | 色综合欧美 | 亚洲欧美综合精品另类天天更新 |