用keil5编写流水灯程序(keil编程流水灯代码)

Keil软件编写流水灯

这个是不对的,sbit是keil针对51硬件对标准C的扩展P1^x中的x只能是立即数,不能做变量,而且for(x=7;x=4;x--);循环什么都做不了,printf函数在单片机中数据流向串口,因此实现这样的功能这个代码显然无法完成。延时算法最简单的当属--运算。具体实例我给你写一个以供参考:

#include STC12C2052AD.h

void delay(unsigned K){while(K--);}//延时函数

void main()

{    

    int i=0;   

    while(1)

    {

        i++;

        i=3;//i在0~3之间变化

        P1=~(1(i+4));//因为是P1.4~P1.7低电平有效所以i要先+4再移位结果还要取非

        delay(65535);//延时

    }

}

keil软件这个流水灯程序怎么写?图片上哪边写错了?能发给我个正确的吗?

错误1,p2小写不行,改成大写P2。

2,那个延时子程序delay(),不能写在主程序中,要写在主程序前面,单独写,主程序去调用它。

3,P2不能写在_corl_()函数中。

4,主程序不能写 int main()

应该这么写

#includereg51.h

#includeintrins.h

void delay()

{

unsigned int a=5000;

while(a--);

}

void main()

{

unsigned char light=0xfe;

P2=0xfe;

while(1)

{

P2=light;

light=_crol_(light,1);

delay();

}

}

keil5跑马灯的实验效果是啥

延时实现LED流水灯效果。端口的八个灯作跑马灯。在本实验中,作为输出口,接8只发光二极管,编写程序,使发光二极管循环点亮。达到延时实现LED流水灯效果。

在keil中,怎么用汇编编写流水灯,先左移再右移,用汇编?

给你参考下,

;左移

star: mov r3,#8 ;设置流水位数

mov p0,#11111110b ;从p0.0开始

loop: acall d01s

mov a,p0 ;读取p0当前数据到acc

rl a ;左移一位

mov p0,a ;将左移的数据再送到p1

djnz r3,loop ;没有完成8位继续

;******************

mov p0,#0ffh ;熄灭所有灯

;******************

;右移

mov r3,#8 ;设置流水位数

mov p0,#01111111b ;从p0.7开始

loop1: acall d01s

mov a,p0 ;读取p0当前数据到acc

rr a ;右移一位

mov p0,a ;将左移的数据再送到p1

djnz r3,loop1 ;没有完成8位继续

ljmp star ;完成后返回到开始再来

;延时子程序

d01s: mov r0,#255

d01l1: mov r1,#198

djnz r1,$

djnz r0,d01l1

ret

end

361知讯网

本文链接:http://pdidw.com/keil/54370.html

发表评论

评论列表

还没有评论,快来说点什么吧~