![]() |
發(fā)布時間: 2020-4-14 21:12
正文摘要:AT89C51簡易在線編程 問題:AT89C51一般只能在專業(yè)編程器上燒錄,每次改動程序,要從目標(biāo)板上撬下芯片,燒錄后再插上運行。我的燒錄器TOP851軟件只能在XP上運行,還要再開一個電腦,實在是很麻煩。怎樣實現(xiàn)在線編程 ... |
可行,轉(zhuǎn)換開關(guān)最好用門電咯 |
一定要按住復(fù)位鍵,撥動編程運行切換開關(guān)。切換時,有不確定因素,可能改寫了數(shù)據(jù),先按住復(fù)位鍵,就不會改動了,松開就運行。 |
今天發(fā)現(xiàn)傳送程序不穩(wěn)定,字節(jié)忽多忽少。 多方查找不是波特率高了的問題,原因在于超級終端只管發(fā),有時前后字節(jié)搞串了。 把超級終端設(shè)為2個停止位就好了。 |
這個適合于編程實驗,很方便,我現(xiàn)在就用這個。 應(yīng)用當(dāng)然燒錄好。 |
其實原來ATMEL,現(xiàn)在MicroChip的AT89S52是支持PC串口或并口編程的。是真正的燒錄到AT89S52中,掉電不失的那種。 |
這種一斷電,SRAM中的程序就沒有了。當(dāng)然可以采用外部電池來保持SRAM中的內(nèi)容。 |
寫入片外數(shù)據(jù)存儲器起始地址為0X0000是一樣的。 HEX文件處理太麻煩,用HEX2BIN.EXE轉(zhuǎn)換為BIN文件(程序內(nèi)存映像文件,什么附加也沒有),用超級終端發(fā)送,每寫一個字節(jié),又讀出發(fā)送回來。 試驗完成! #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; //寫外存地址 //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; //寫外存地址 EA=1; //總中斷許可 while(1){;} } |
Powered by 單片機教程網(wǎng)