单片机课程设计定时器控制4只LED滚动闪烁系统 - 图文

开始 初始化 设置计数器 否 i=0;i++_ LED灯开始循环闪烁 计数器开始计数 否 计数完成 程序中断,i自加1,下一个LED灯开始闪烁

图4.2程序图

4.2.2程序清单:

主程序:

#include //定义8051寄存器的头文件 #define uchar unsigned char //定义无符号字符型(0——255) #define uint unsigned int //定义无符号整型(0——65535) //字符与整型分为有符号(signed)与无符号(unsigned)两类 //通常sbit数据类型是用于存取内部可位寻址的数据存储器 sbit B1=P2^0; //声明B1为P1.0端口 sbit G1=P2^1; sbit R1=P2^2; sbit Y1=P2^3;

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

//1.先声明一个bdata存储器形式的变量,再声明属于该变量的sbit变量,例如: // char bdata scan; 声明scan为bdata存储器类型的字符 // sbit input_0=scan^0; 声明input_0为scan变量的bit 0 //2.先声明一个sfr变量,再声明属于该变量的sbit变量,例如: // sfr P0=0x80; 声明P0为0X80存储器位置,即P0

12

// sbit P0_0=P0^0; 声明P0_0为P0变量的bit0 //3.直接指定存储器位置,例如要声明P0的bit0,则 // sbit P0_0=0X80^0; 声明P0_0为0x80地址的bit0

uint i,j,k;

//------------------------------------------------------------------- //主程序

//------------------------------------------------------------------- void main() //主程序开始 {

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; //定时器/计数器控制寄存器TCOD Timer0的启动开关 while(1); //无穷循环 }

//------------------------------------------------------------- //T0中断函数

//-------------------------------------------------------------- void LED_Flash_and_Scroll() interrupt 1

{ //每累计若干次定时器中断才执行一次闪烁 if(++k<35)return; //if条件语句 k=0;

switch(i) //多分支选择语句,switch语句开始 { case 0:B1=!B1; //蓝灯闪烁 break; //终止执行switch或循环语句 case 1:G1=!G1; //绿灯闪烁 break; case 2:R1=!R1; //红灯闪烁 break; case 3:Y1=!Y1; //黄灯闪烁 break; //退出switch语句 d

>>鐏炴洖绱戦崗銊︽瀮<<
12@gma联系客服:779662525#qq.com(#替换为@)