STC的片子开发最简单就是串口烧写了,只要板子上加max232做个串口就可以了。自己做板的时候不管用不用最好都预留着。
ISP是以前at89s系列的烧写方式,AVR也可以,一般用并口,而现在很多机子没有,不是很方便。
编程器就不推荐了,麻烦,贵。当然如果是生产的话另当别论,专业编程器一次烧几时片小意思。
我就精简的说吧,RS232是串口下载;ISP的实现相对要简单一些,一般通用做法是内部的存储器可以由上位机的软件通过串口来进行改写。对于单片机来讲可以通过SPI或其它的串行接口接收上位机传来的数据并写入存储器中。所以即使我们将芯片焊接在电路板上,只要留出和上位机接口的这个串口,就可以实现芯片内部存储器的改写,而无须再取下芯片。
,不得他传)
如果你实验不成功的话就问你的指导老师,将程序中的uchar dis[]=;这六个数码管显示的接口进行修改。
如有问题可以问我。预祝成功!
//数字钟实验源代码
#include
#include
#define ZX XBYTE[0xffDC]
#define XW XBYTE[0xffDD]
#define uchar unsigned char
uchar count=10;
uchar data num[6];
uchar disptab[]={0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90}; /*0-9 */
uchar dis[]=;
uchar hour=0,minute=0,second=0,i,j;
void time0(); /*定时程序*/
void bcchange(); /*十位个位转换 */
void disp(); /*显示程序 */
void time0() interrupt 1 using 3 /*定时程序 */
{
TL0=0XB7;
TH0=0X3C;
count--;
if(count==0)
{
count=10;
second++;
}
if(second==60)
{
minute++;
second=0;
}
if(minute==60)
{
hour++;
minute=0;
}
if(hour==24)
{
hour=0;
}
}
void bcchange() /*十位个位转换 */
{
num[5]=second%10 ;
num[4]=second/10;
num[3]=minute%10 ;
num[2]=minute/10;
num[1]=hour%10 ;
num[0]=hour/10;
}
void disp() /*显示程序*/
{
for(i=0;i<6;i++)
{
ZX=disptab[num[i]];
XW=dis[i];
for(j=120;j>0;j--);
}
}
void main() /*主程序 */
{
TMOD=0x01;
TL0=0XB7;
TH0=0X3C;
EA=1;
ET0=1;
TR0=1;
while(1)
{
bcchange();
disp();
}
}
1.两个都可以 一般用ISP
2.你说的是编程器吧 这个也是支持的