#define uchar unsigned char //定义无符号字符
#define uint unsigned int //定义无符号整数
void delay(uint) //声明延时函数
void main(void)
{
uint i
uchar temp
while(1)
{
temp=0x01
for(i=0i<8i++) //8个流水灯逐个闪动
{
P1=~temp
delay(100) //调用延时函数
temp<<=1
}
}
void delay(uint t) //定义延时函数
{
register uint bt
for(tt--)
for(bt=0bt<255bt++)
}
跑马灯程序最基本的,c语言还未入门啊!!!
实验目的:本程序主要实现一个简单的流水灯程序即轮流点亮C口的8个灯(先点亮RC0,再熄灭RCO点亮RC1。。。。)
硬件要求:拨码开关S2全部置ON。
#include<p16f877A.inc> 调用头文件
__CONFIG _DEBUG_OFF&_CP_ALL&_WRT_HALF&_CPD_ON&_LVP_OFF&_BODEN_OFF&_PWRTE_ON&_WDT_OFF&_HS_OSC
芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡
**********************用户寄存器定义********************
count equ 20h 移位次数寄存器
del_va1 equ 0ffh 外层延时参数
del_va2 equ 0ffh 内层延时参数
org 00h 程序人口地址
addlw0ffh
**********************主程序开始***********************
main
nop ICD所需要的一条空指令
clrf PORTC 先清楚C口所有显示
banksel TRISC 选择I/O口方向寄存器所在的体
clrf TRISC 设置C口全为输出
clrf STATUS 返回体0
movlw.8
movwfcount 装载循环次数8(C口共8位)
bsf STATUS,C置进位标志位为1,因循环移位是带进位循环的
loop
rlf PORTC,1 C口左移1位
call delay
call delay
CALL delay 调用三次延时程序(保证亮度,以及流水灯闪烁速度)
bcf STATUS,C清0进位标志位(永远只有一只LED亮)
DECFSZ count,1 判断是否一轮循环结束
goto loop否,继续循环移位
GOTO main是,程序重头开始
***********************延时程序*************************
delay
movlwdel_va1 延时程序外层参数
movwf30h
movlwdel_va2 延时程序内层参数
movwf31h
decfsz 31h,1
goto $-1
decfsz 30h,1
goto $-4
return
********************程序结束****************************
end
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)