选择你所使用的51芯片就是select device for target 'xxxx'
file->new 新建文件 保存为.c文件
双机source group 1 把刚才建的文件添加进去
flash----configure flash tools-----output选项卡勾上great hex files
然后仿真 ok
#include"reg51.h"#define uchar unsigned char
delayMs( unsigned a ) {}
writeData(unsigned a){
}
uchar keyscan(void)//0向下,2向上,1Enter,3返回//去了“;”
{
uchar numb,clik
P2=0xf0
do{
numb=P2
numb=numb&0xf0
while(numb!=0xf0)
{
delayMs(10)
numb=P2
switch(numb)//num》》numb
{
case 0xe0:clik=1
break
case 0xd0:clik=2
break
case 0xb0:clik=3
break
case 0x70:clik=4
break
}
}
}while(!clik)
return(clik)
}
void main()
{
uchar clik2
init()
clik2=keyscan()
writeData(47+clik2)
}
程序不全,改完后还是有warning,自己再改改吧! 第一建议多看书,第二建议养成良好的编程习惯,多边边,多调试,调试多了这根本不算个问题!
按键效果没要求么,那我随便给你写个吧,功能效果:S1按下,8个LED全亮;S2按下,全灭,S3按下,1357亮2468灭,低电平灯亮,以下是程序#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit key1=P3^2
sbit key2=P3^3
sbit key3=P3^4
void delay(uint n) //延迟程序,外接12Mhz晶振的话 大约延迟n毫秒
{
uchar i
while(n--)
{
for(i=0i<125i++)
}
}
void main()
{
P1=0XFF
while(1)
{
if(key1==0) //按键1按下
{
delay(10) //消抖
if(key1==0) //延迟10ms后再次判断,有则说明按键确1实按下
P1=0x00 //点亮所有LED灯
while(!key1) //等待按键1d起
}
else if(key2==0) //按键2按下
{
delay(10) //消抖
if(key2==0) //延迟10ms后再次判断,有则说明按键2确实按下
P1=0xff //熄灭所有LED灯
while(!key2) //等待按键d起
}
else if(key3==0) //按键3按下
{
delay(10) //消抖
if(key3==0) //延迟10ms后再次判断,有则说明按键3确实按下
P1=0xaa //1357亮
while(!key3) //等待按键3d起
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)