配色: 字号:
定时器控制4只LED滚动闪烁
2012-12-11 | 阅:  转:  |  分享 
  
//-----------------------------------------------------------------

//名称:定时器控制4只LED滚动闪烁

//网站:www.taobai.cc

//说明:4只LED在定时器中断例程下控制不断滚动闪烁

//-----------------------------------------------------------------



//=================================================================

//声明

//=================================================================

//“头文件”或称为包含文件(.h),这是一种预先定义好的基本数据。

#include //定义8051寄存器的头文件



//宏定义

#defineucharunsignedchar//定义无符号字符型(0——255)

#define uintunsigned int//定义无符号整型(0——65535)

//字符与整型分为有符号(signed)与无符号(unsigned)两类



//通常sbit数据类型是用于存取内部可位寻址的数据存储器

sbitB1=P2^0; //声明B1为P1.0端口

sbitG1=P2^1;

sbitR1=P2^2;

sbitY1=P2^3;

//若要使用权sbit数据类型,则其声明方式有下列几种:

//1.先声明一个bdata存储器形式的变量,再声明属于该变量的sbit变量,例如:

// charbdatascan; 声明scan为bdata存储器类型的字符

// sbitinput_0=scan^0; 声明input_0为scan变量的bit0

//2.先声明一个sfr变量,再声明属于该变量的sbit变量,例如:

// sfrP0=0x80; 声明P0为0X80存储器位置,即P0

// sbitP0_0=P0^0; 声明P0_0为P0变量的bit0

//3.直接指定存储器位置,例如要声明P0的bit0,则

// sbitP0_0=0X80^0;声明P0_0为0x80地址的bit0



uinti,j,k;



//-------------------------------------------------------------------

//主程序

//-------------------------------------------------------------------

voidmain() //主程序开始

{

i=j=k=0;

P2=0xff;//开始时全部关闭

TMOD=0X02; //定时/计数器工作方式寄存器 低4位

//T0定时器0工作于模式2位数:8位计数范围:0-255具有自动加载功能

TH0=256-200; //200us定时

TL0=256-200;

IE=0X82; //中断使能寄存器IE,相当于EA=1;ET0=1;

TR0=1; //定时器/计数器控制寄存器TCODTimer0的启动开关

while(1); //无穷循环

}



//-------------------------------------------------------------

//T0中断函数

//--------------------------------------------------------------

voidLED_Flash_and_Scroll()interrupt1

{ //每累计若干次定时器中断才执行一次闪烁

if(++k<35)return;//if条件语句

k=0;

switch(i) //多分支选择语句,switch语句开始

{

case0:B1=!B1; //蓝灯闪烁

break; //终止执行switch或循环语句

case1:G1=!G1; //绿灯闪烁

break;

case2:R1=!R1; //红灯闪烁

break;

case3:Y1=!Y1; //黄灯闪烁

break; //退出switch语句

default:i=0;

}



if(++j<150) //每次LED持续闪烁一段时间

return; //从函数返回语句

j=0;

P2=0xff; //关闭显示

i++; //切换到下一LED

//符号:++,功能:加1,范例:i++,说明:执行运算后再将X变量的值加1

//符号:--,功能:减1,范例:i--,说明:执行运算后再将X变量的值减1

}



//在选择C51中循环语句中,要注意以下几个问题;

//1.定义C51循环变量时,尽量采用无符号字符型变量

//2.在for循环语句中,尽量采用变量减减来做循环

//3.在do...while、while语句中,循环内变量也采用减减方法











献花(0)
+1
(本文系图购网首藏)