#include //52系列单片机头文件
#include //C51库自带头文件
#define uchar unsigned char //宏定义无符号字符型为uchar
#define uint unsigned int //宏定义无符号整型为uint
void delay(uint z); //声明延时函数
uchar aa; //定义无符号变量
void main() //主函数
{
aa=0xfe; //给变量赋初值
while(1) //大循环,无限循环
{
P1=aa; //给P1口赋值1010 1010
delay(500); //调用延时子函数延时500毫秒
aa=_crol_(aa,1);//调用intrins.h中的循环左移函数
}
}
void delay(uint z) //带参数延时子函数,延时z毫秒
{
uint x,y; //定义局部变量,局部变量只在此子函数范围内有效,退出子函数时,变量空间自动释放
for(x=z;x>0;x--) //双重for循环语句
for(y=110;y>0;y--); //利用循环语句实现CPU延时,占用CPU
}
/*
intrins.h头文件描述:
内部函数 描述
_crol_ 字符循环左移
_cror_ 字符循环右移
_irol_ 整数循环左移
_iror_ 整数循环右移
_lrol_ 长整数循环左移
_lror_ 长整数循环右移
_nop_ 空操作8051 NOP 指令
_testbit_ 测试并清零位8051 JBC 指令
*/
关键字:单片机自 流水灯
引用地址:
单片机自学笔记之:流水灯设计程序
推荐阅读最新更新时间:2024-03-16 15:56
神舟IV学习笔记(一)设置IAR开发环境与流水灯
小弟刚刚拿到神舟的板子,那是相对的激动。好大的液晶屏幕,好多资料哦,好强大啊~~。 首先需要准备的是《STM32F10xxx参考数据》,我看的是2010年1月10日的版本,不知道今年有没有更新中文用户手册。STM32F107xx微控制器是互联性产品,有些部分不一样。STM32的开发环境有三种,Keil MDK /IAR EWARM/RIDE三种开发环境,个人感觉IAR比较好点,主要是用破解版的比较稳定。 第一步选择器件,根据芯片的不同选择不同,如图1所示 第二步:设置路径文件,其中$PROJ_DIR$\表示的是当前路径,$PROJ_DIR$\..表示的当前路径的上面一级。Defined symbols表示的是宏定义:US
[单片机]
51单片机 定时器0中断实现1秒LED流水灯
使用定时器0中断实现LED1秒的流水灯 #include reg52.h typedef unsigned int u16; typedef unsigned char u8; u8 code LED ={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; u16 time,i; void timer0init() { TMOD=0x01; ET0=1; EA=1; TR0=1; TH0=(65536-50000)/256; TL0=(65536-50000)%256; } void main() { timer0init(); wh
[单片机]
基于51单片机的流水灯设计
三个按键:A按键启动、B按键控制不同流水速度(低中高)、C按键 设计思路一(未用中断): 8个LED灯正极解电源,负极接单片机I/O口。 死循环:设置P2口为11111110,使用左移函数,循环七次。 同时每次位移中间加入延时函数。 三个按键:A按键启动、B按键控制不同流水速度(低中高)、C按键控制流水灯暂停蜂鸣器长响: 思路一:设置一个变量i,起初为0,按下A键后为1;当i为1进入死循环 设置变量j,按下B,j++,当j大于3,j=j-3;使用j*1000,来空置循环函数的延时时间。设置bit变量s=0,按下按键C,s++,当s=1,j进入循环蜂鸣器响,s=0退出循环。 在每次延时时检查按键 #inclu
[单片机]
TQ210裸机编程(2)——LED流水灯
两个文件start.S和led.c start.S .global _start @声明一个全局的标号 _start: bl main @跳转到C函数去执行 halt: b halt @死循环 led.c #define GPC0CON *((volatile unsigned int *)0xE0200060) #define GPC0DAT *((volatile unsigned int *)0xE0200064) void delay(volatile unsigned int t) { volatile unsigned int t2 = 0xFFFF; while (t--) for (; t2; t2--); }
[单片机]
51单片机 EEPROM 24c02 I2C代码封装保存实现流水灯
这里把EEPROM 24c02封装起来,今后可以直接调用,其连线方式为:SDA-P2.1;SCL-P2.0;WP-VCC _ :i2c.c 1 /*-- 2 名称:IIC协议 3 内容:函数是采用软件延时的方法产生SCL脉冲,固对高晶振频率要作 一定的修改....(本例是1us机器 4 周期,即晶振频率要小于12MHZ) 5 */ 6 #include i2c.h 7 #define _Nop() _nop_() //定义空指令 8 bit ack; //应答标志位 9 sbit SDA=P2^1; 10 sbit SCL=P2^0; 11 /* 12 uS延时函数,含有输入参数 unsig
[单片机]
玩转单片机,你我都是菜鸟(续3)
好久没有更新博文了,由于晚上回家没有网所以很久没更新了,好不容易写的一篇突然断电没有保存,真够杯具的。电来了又重新写了。不知道最近还有没有人关注我。其实这我都不惦记了,希望群里的朋友迷茫的尽快找到方向,尽快都成为高手。如果你还关注我不知道是因为我的经历还是因为我前一篇的那些题目?前几篇写的一些我的经历可能有些人看了,可能还会有同感,如果愿意可以跟着我的思路走,先完成我上篇博文提到的几个题目。至于我的经历,如果你还感兴趣可以留言,我在后边再说说。。。。。。 下面开始第一个题目:流水灯 硬件前提:用51的P1口控制8个LED,1 点亮,0 熄灭。 (1)第1,3,5,7个灯半亮,其余的全亮。 (2)第1个亮1/8
[单片机]
单片机(AT89C51)的仿真实验——流水灯和逐一闪烁灯(输入与输出)
在进行仿真实验前必须先装了软件,一个是单片机仿真软件(ISIS 7 Professional)和单片机写程序的软件(Keil uVision4),一个写程序一个烧程序。如果没装的可以私聊我。 流水灯的实现(正向的流水灯): 原理: P1初始值是:1111 1111和temp(0000 0001)异或等于以后 P1=1111 1110使得第一个灯亮着, 进入循环0000 0001左移一位得到0000 0010,然后再和P1(1111 1110)异或等于以后 P1=1111 1100使得第一个灯和第二个灯都亮着,下面也是如此往复的循环,一盏一盏的连着点亮就实现了流水灯,然后一盏接着一盏的灭掉。 #include reg51
[单片机]
LPC1768之GPIO流水灯的实验例程
**************************************** Copyright (c) CaKen ************************************ ******************************************************** **文件名 : main.c **作者 : CaKen **版本号 : V1.0 **时间 : 2014.08.13 **功能描述 : GPIO实验测试 ******************************************************** ***********
[单片机]