求大神在keil上帮写51单片机C语言程序

第一个实验:通过P0口控制8个LED灯,通过K1按键改变亮灯位置。具体为:程序开始时,D11灯点亮,其余7个灯(D12-D18)处于熄灭状态;按1次K1按键,D11灯熄灭,D12灯点亮,此时D13-D18仍然处于熄灭状态;以此类推,每按1次K1按键,亮灯的位置发生一次变化,当D18亮完后,又循环到D11点亮。
第二个实验:通过P0口控制8个LED灯,通过定时器查询工作方式,实现D11-D18顺序轮流点亮,每个灯亮半秒再灭半秒(即程序开始运行后,D11首先点亮,半秒后D11熄灭,再半秒钟后D12点亮,以此类推,D18熄灭半秒后再循环到D11点亮)。晶振频率为12Mhz

//第一个实验:
//假设8个LED阴极指向单片机,D11连接P0.1,D12连接P0.2 ... D18连接P0.7
//假设K1按键在P2.3引脚
#include<reg51.h>
#include<intrins.h>
sbit k1=P2^3;//假设K1按键在P2.3引脚
void main()
{
P0=0xfe;
while(1)
{
if(k1==0)
{
while(k1==0);
P0=_crol_(P0,1);
}
}

}

//第二个实验:
//假设8个LED阴极指向单片机,D11连接P0.1,D12连接P0.2 ... D18连接P0.7
#include<reg51.h>
char led[]={0xfe,0xff,0xfd,0xff,0xfb,0xff,0xf7,0xff,0xef,0xff,0xdf,0xff,0xbf,0xff,0x7f,0xff};

void main()
{
char i=0;
char counter=0;
TMOD=0x01;//T0 工作方式1
TH0=(655356-50000)/256;//延时50ms
TL0=(655356-50000)%256;//延时50ms
TR0=1;//启动T0
while(1)
{
if(TF0==1)//查询
{
TH0=(655356-50000)/256;//重新延时50ms
TL0=(655356-50000)%256;//重新延时50ms
counter++;
if(counter==10)//延时0.5秒
{
counter=0;//重新开始新一轮0.5秒延时
i++;
if(i==16)
{
i=0;
}
P0=led[i];//点灯
}
}
}
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-10-09
Keil写的C51单片机程序里面为C语言,也可以是汇编语言。里面保存格式决定用汇编或C语言本回答被网友采纳