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