這個玩意其實(shí)很簡單的。就是靠監(jiān)控MCU檢測到STCISP開啟時發(fā)送的0x7F,,然后重啟。 我的設(shè)計(jì)是接到10個連續(xù)的0x7F然后重啟MCU,。因?yàn)樵趧e的波特率下可能會有不連續(xù),,類似0X7F的波形出現(xiàn)。為了避免誤重啟,。所以需要連續(xù)的,。 上代碼:http://www./f/1stc2.zip
先上電路圖。 然后就是艱苦(,?)的制作過程了,。 先在Eagle里面Layout……
然后拿起洞洞板……裁出一小塊……飛線……
反面 上正面,監(jiān)控芯片STC15F104E,,調(diào)整到11.0592M RC 振蕩器
上面的燈作為電源指示。收到信號后將斷開鏈接,,也就是閃下,。 插在板子上的效果:
hwconfig的代碼是: #include //設(shè)置#define BAUD_RELOAD 0xFD //9600Baud#define START_CMD_NUMBER 10 //接受到連續(xù)X個7F就重啟STC單片機(jī)#define PW_SWITCH P3_4 //P3_4控制8550電源開關(guān)#define CRYSTAL_12M 1#define RXD P3_0 //沒有串口要靠模擬#define RXB P3_0 //沒有串口要靠模擬#define TXB P3_1 //沒有串口要靠模擬//BAUD = 256 - SYSclk/3/BAUDRATE/M (1T:M=1; 12T:M=12)//NOTE: (SYSclk/3/BAUDRATE) must be greater than 98, (RECOMMEND GREATER THAN 110)//串口模擬部分抄STC官方程序//另外SDCC的庫要使用修改板本的。否則MCU會因?yàn)镸OVX,,MOVP2指令不停復(fù)位?。˙UG)//#define BAUD 0xF400 // 2400bps @ 22.1184MHz#define BAUD 0xFA00 // 2400bps @ 11.0592MHz//#define BAUD 0xFD00 // 4800bps @ 11.0592MHz__sfr __at 0x8E AUXR;萬致遠(yuǎn)原創(chuàng)。這里是這個東東的第二版http://www./mcu/1576.html
|