
1、把程序写入单片机一般叫烧写,故有烧写器,可以用它很容易的把程序烧进单片机,但不推荐这种方法,因为烧写器贵。
2、现在很多单片机支持ISP方式的烧写,如果电脑有并口的话,就可以用个很简单的并口ISP线即可,如果没有并口,就买个USB_ISP的接口,支持usb接口,很方便。
3、还有就是用STC的51单片机,直接从电脑串口连三根线在搭配软件就可以烧写,推荐第三种。
#include<reg51.h>#define uchar unsigned char
uchar keyval,keynum=0
void t1isr() interrupt 3
{
uchar sccode,recode
TH0=(65536-10000)/256
TL0=(65536-10000)%256
P3=0x0f //发0扫描,列线输入
if ((P3 & 0x0f) != 0x0f)keynum++ //有键按下
else keynum=0
if(keynum>5) //按键保持在5次中断以上
{
keynum=0
sccode = 0xef //逐行扫描初值
while((sccode&0x01)!=0)
{
P3=sccode
if((P3&0x0f)!=0x0f)
{
recode=(P3&0x0f)|0xf0
getkey((~sccode)+(~recode))
}
else
sccode=(sccode<<1)|0x01
}
}
getkey(0)
}
void getkey(uchar key)
{
if(key==0){keyval=0xffreturn}
switch(key)
{
case 0x11:keyval=7break
case 0x12:keyval=4break
case 0x14:keyval=1break
case 0x18:keyval=10break
case 0x21:keyval=8break
case 0x22:keyval=5break
case 0x24:keyval=2break
case 0x28:keyval=0break
case 0x41:keyval=9break
case 0x42:keyval=6break
case 0x44:keyval=3break
case 0x48:keyval=11break
case 0x81:keyval=12break
case 0x82:keyval=13break
case 0x84:keyval=14break
case 0x88:keyval=15break
default:keyval=0xffbreak
}
}
main()
{
uchar mima[]="12345678"
uchar mmins[8]
uchar i,num,sc
TMOD=0x21
TH0=(65536-10000)/256
TL0=(65536-10000)%256
TR0=1
ET0=1
TH1=0xfd
TL1=0xfd
TR1=1
SCON=0x40
EA=1
num=0
while(1)
{
if(keyval!=0xff){mmins[num]=keyvalnum++}
if(num>=8)
{
num=0
sc=1
for(i=0i<8i++)
{
if(mmins[i]!=mima[i]){sc=0break}
SBUF=sc
while(TI==0)
TI=0
}
}
}
}
关键看你如何控制,最简单的就是:
include<reg51.h>sbit led1=P1^4
sbit led2=P1^5
sbit led3=P1^6
sbit key1=P0^4
sbit key2=P0^5
sbit key3=P0^6
main()
{
while(1)
{
led1=key1
led2=key2
led3=key3
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)