PIC单片机16F877A跑马灯程序,课设用

PIC单片机16F877A跑马灯程序,课设用,第1张

rg 0000h 开始

ajmp loop

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

loop:

mov p0,#0ffh 关闭所有灯

clr p0.0 点亮灯p0.0

lcall delay 延时一段时间?

clr p0.1 点亮灯p0.1

lcall delay

clr p0.2 点亮灯p0.2

lcall delay

clr p0.3 点亮灯p0.3

lcall delay

clr p0.4 点亮灯p0.4

lcall delay

clr p0.5 点亮灯p0.5

lcall delay

clr p0.6 点亮灯p0.6

lcall delay

clr p0.7 点亮灯p0.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

#include<pic.h>//流水灯实验

#define uchar unsigned char//宏定义

#define uint unsigned int

__CONFIG(0x3B31)//设置配置位

void delay(uint x)//延迟函数x表示毫秒

{

uint a,b

for(a=xa>0a--)

for(b=110b>0b--)//嵌套

}

void main()

{

uchar i//为下面的for循环作一个变量i

TRISD=0x00//设置全为输出状态

while(1)//因为是流水灯所以是一个死循环,所以要在while里不要加分号

{

PORTD=0X01//先点亮第一个二极管

for(i=8i>0i--)//因为有8个灯作流水灯

{

delay(500)//延迟500ms

PORTD=PORTD<<1//让RD口左移动一位后再付给回PORTD

}

}

}

/*软件仿真功能:打开菜单Debugger--Select Tool--MPLAB SIM进行设置断点再单步仿真

可以打开菜单View--Special Function Registers看PIC全部的I/O口

也可以打开菜单View--Watch看I/O口和变量

也可以打开菜单的Debugger--Setting设置晶振的频率后打开Debugger--Stopwatch看每个指今的具体时间和

流水灯的时间,先按Zero清0再单步*/


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

原文地址:https://54852.com/yw/11315841.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存