㈠ 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都分不清的。