㈠ STC冷啟動免手動下載器原理問題
當按下電腦上ISP下載按鈕時,電腦串口會發送連續7F指令,104單片機檢測這個指令,控制三極體關斷一段時間再導通,就實現了自動冷啟動下載。
㈡ STC15F104W和STC15W104這兩個單片機有啥不同
這兩個單片機的區別一是工作電壓不同:STC15F104W是5Ⅴ的單片機,VCC為3.8~5.5V,高於3.3V,就是標准5V的。而STC15W104電壓范圍寬,VCC為2.4~5.5V,可見,是可以工作在3.3V下的。
下面兩個圖就是這兩個晶元的特性,畫紅框內的就是區別。
㈢ stc15f104e單片機與PC機通信時如何設置9600的波特率
#include "STC11.h"
/*************#define***********/
#define RECEVICE P15=0
#define SEND P15=1
#define SERIAL_RELOAD_COUNT_4800 0xfa //4800/11.059200
#define SERIAL_RELOAD_COUNT_9600 0xfd //串口波特率設置參數 9600/11.059200
#define SERIAL_RELOAD_COUNT_14400 0xfe //14400/11.059200
#define SERIAL_RELOAD_COUNT_19200 0xfe //19200/11.059200
/***********外部變數聲明*************/
extern uchar task_delay_for_uart_timeout;
extern uchar array[8],arraynum;
/*extern bit timeout_flag;*/
/***********函數聲明****************/
void serial_send(uchar senddata);
void serial_rece(void); // interrupt 4;
void serial_port_init(void);
/***************函數體*****************/
void serial_port_init(void)
{
SCON=0x50; //0101,0000 8位可變波特率,無奇偶校驗
BRT=SERIAL_RELOAD_COUNT_9600; //重裝值 串口波特率設置參數 9600/11.0592
AUXR=0X11; //啟動獨立波特率發生器並串口1選擇獨立波特率發生器;
AUXR1=0X80; //串口從P3 口切換到P1口
ES=1; //允許串口中斷
EA=1; //開總中斷
RECEVICE; //485串口晶元開接收
}
void serial_send(uchar senddata)
{ SEND;
ES=0; //即發送數據不希望發生串口中斷 故將串口中斷暫時關閉
TI=0;
SBUF=senddata;
while(TI==0); //此while語句後面需加分號以達到等待數據發送完成的目的 當數據發送完畢 TI=1 退出循環
TI=0; //說明雖然串口中斷關了 但是在發送完數據的時候TI還是會被置位??????
ES=1; //開串口中斷
RECEVICE;
}
void serial_rece() interrupt 4 //可以把下面的判斷語句裡面的RI==1去掉???
{
//接收中斷標志位 即表示有數據開始接收到
if(/*RI==1&&*/arraynum==0||task_delay_for_uart_timeout!=0) //(為第一個數據接收准備)
{RI=0;
task_delay_for_uart_timeout=10; //清除標志位並開始計時50ms
array[arraynum]=SBUF;
arraynum++;
}
//else if(/*RI==1&&*/task_delay1!=0) //(為後續的10ms判斷准備)10ms未到才執行
//{RI=0;
// task_delay1=6; //清除標志位並開始計時10ms
// array[arraynum]=SBUF;
// arraynum++;
//}
/*else if(RI==1&&arraynum==) //(接收最後一位元組准備)
{RI=0;
array[arraynum]=SBUF;
arraynum++;
}*/
else {array[8]=0;arraynum=0;} //如果不是第一個位元組(arraynum!=0)且超時(task_delay1==0)那麼全清零
}
我拷我自自己工程里的部分給你。
要自己學會看datasheet啊,不能拿別人的。
㈣ 手上一單片機stc15f104W,說明說程序空間4K,沒注意,以為8K的,直接充了7K的程序進去,怎麼也運行好好的
「直接充了7K的程序進去」
什麼東西7kB。很多初學者連.hex和.bin都分不清的。