📄 t1-conut.c
字号:
/*******************************************************************
* *
* ME500单片机开发系统演示程序 - 定时与计数中断 *
* *
* P0 LED显示 (流水灯) *
* *
* 版本: V1.0 (2006/11/20) *
* 作者: gguoqing (Email: gguoqing@willar.com) *
* 网站: www.willar.com(伟纳电子) www.mcusj.com(伟纳单片机世界) *
* 邮箱: support@willar.com *
* *
*【版权】Copyright(C)伟纳电子 www.willar.com All Rights Reserved *
*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息! *
* *
*******************************************************************/
//P3.2输出T1计数脉冲,请将P3.2与P3.5用导线连接。
//定时器0定时,中断溢出一次,T1计数器加1。
//T1计数器计满10次,LED灯左移一位。(流水灯)
//*****************************************************************
#include < reg51.h >
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit T1_pulse=P3^2;
uchar move;
/*********************************************************
主函数
**********************************************************/
void main()
{
P0=0xff; //关所有灯
P2=0xff;
TMOD=0x51; //TIMER0定时,TIMER1计数
TH0=0xa6;
TL0=0x00; //25ms定时常数
TH1=0xff;
TL1=0xf6;
EA=1; //开总中断
ET1=1; //允许定时/计数器1 中断
TR0=1; //启动定时/计数器0 中断
TR1=1; //启动定时/计数器1 中断
T1_pulse=1;
move=0xfe; //扫描初值
while(1)
{
do
{ }while(!TF0); //T0采用查询方式
{
TR0=0;
TH0=0xa6;
TL0=0x00; //25ms定时常数
T1_pulse=~T1_pulse; //T1中断触发脉冲
TF0=0;
TR0=1;
}
}
}
/*********************************************************
Time1 中断服务函数
*********************************************************/
void Time1(void) interrupt 3
{
EA=0;
TH1=0xff;
TL1=0xf6;
P0=move;
move=(move <<1)|0x01;
if(move==0xff)
move=0xfe;
EA=1;
}
//*********************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -