单片机的跑马灯程序 求注释 尽量每行都注释 我几乎看不懂啊! 谢谢= =!!明天就要答辩啦!!快的话加分加

单片机的跑马灯程序 求注释 尽量每行都注释 我几乎看不懂啊! 谢谢= =!!明天就要答辩啦!!快的话加分加,第1张

哈哈 这不难啊!!!!…………单片机的跑马灯程序主要用到了延时子程序,clr,lcall,ajmp 指令, 通过轮流点亮p1.0 …..P1.7 实现效果。你可以通过此程序的学习, 进一步掌握单片机的IO端口 *** 作。

汇编语言参考程序:

org 0000h 开始

ajmp loop

org 0080h 到0030h处避开00-30的敏感地址

loop:

mov p1,#0ffh 关闭所有灯

clr p1.0 点亮灯p1.0

lcall delay 延时一段时间?

clr p1.1 点亮灯p1.1

lcall delay

clr p1.2 点亮灯p1.2

lcall delay

clr p1.3 点亮灯p1.3

lcall delay

clr p1.4 点亮灯p1.4

lcall delay

clr p1.5 点亮灯p1.5

lcall delay

clr p1.6 点亮灯p1.6

lcall delay

clr p1.7 点亮灯p1.7

lcall delay

AJMP LOOP 到最开始loop处重新运行

delay: mov r5,#20 延时。

d1: mov r6,#40

d2: mov r7,#248

djnz r7,$

djnz r6,d2

djnz r5,d1

ret

end

 

c语言参考程序:

#include<reg51.h>//头文件

#define uchar unsigned char //宏定义,为方便编程

#define uint unsigned int

#define LED P1 //宏定义,将P1口定义为LED

uchar led_value[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0x00}//定义一数组,内存放跑马灯数据

uchar *p=led_value//定义指针,指向跑马灯数组首地址

void delay() //延迟函数,与跑马灯跳动频率有关

{

uchar ii,jj

for(ii=0ii<200ii++)

for(jj=0jj<200jj++)

}

void run_led() //跑马灯运行函数

{

while(*p!=0x00)

{

LED=*p//将数组中数据取出赋给P1口

p++//预取下一数据

delay()//延迟

}

p=led_value

}

char code SST516[3] _at_ 0x003b//仿真器保留

main() //主函数

{

while(1)

run_led()//上电即运行跑马灯程序

}

哈哈 !!!哈哈哈!!!!打字 打得手都是痛的 …………希望对你有所帮助……

跑马灯效果,如果静态测试的时候没有问题,改成动态读取后,就出问题了,

你可以这样来测试,把从数据库里读取的语句删除,只保留一条,自己复制粘贴到代码位,然后用for next之类的来循环,看还会不会有问题。

一般这种跑马灯效果,就是通过计算图片的宽度,和图片所在的容器的宽度,用js控制容器的margin来实现的,所以静态改成动态后,一般都是里面的图片的尺寸出了问题,检查下CSS样式代码,把里面所有的图片,尺寸设置成一样的。

另外还有一种可能就是动态读取出来的图片“数量”不够。

呃, 这都是我以前做web时,在用跑马灯效果时遇到过的情况,希望能帮助到你!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11603584.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存