⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timer.c

📁 继续上传NEC单片机的例子程序,很好的东东.我在日电电子中国培训的材料.共享.
💻 C
字号:
#pragma sfr
#pragma di
#pragma ei
#pragma interrupt  INTTM000 MD_INTTM000

#include "timer.h"
#include "extern.h"
#include "stdio_smplus.h"



void timer_init( )
{
	TMC00=0x00;
	PRM00 &= 0xfc;				/* 内部时钟计数 */
	IF0 &= 0xdf;				/* 设置INTTM000 */
	CRC00 &= 0xfe;	
	CR000 = 0x2faf07f;			/* 设置计数值 */
	TMC00 = 0x0c;				/* 开始interval timer功能 */
	MK0 &= 0xdf;				/* INTTM000使能 */
	
	
	state = 0x01;				/* 红灯状态 */
	count1 = 0x00;
	count2 = 0x00;
	count3 = 0x00;
	cycle = 0x00;
	
}


__interrupt void MD_INTTM000( )
{

	if(state == 0x01)
	{
				 count1 ++;
				 if(count1 == 0x20)
				 {
				 	P2 &= 0xfe;	/* 红灯灭 */
				 	P3 |= 0x01;	/* 绿灯亮 */
				 	count1 &= 0x00;
				 	state &= 0x00;
				 	state |= 0x02;	/* 转到绿灯状态 */
				 	printf("Now green light shine.\n");
				 }

	}
	else if(state == 0x02)
	{
				 count2 ++;
				 if(count2 == 0x20)
				 {
				 	P3 &= 0xfe;	/* 绿灯灭 */
				 	P4 |= 0x01;	/* 黄灯亮 */
				 	count2 &= 0x00;
				 	state &= 0x00;	/* 转到黄灯状态 */
				 	printf("Now yellow light shine.\n");
				 }
	
	}
	else
	{			 count3 ++;
				 
				 if(count3 == 0x05)
				 {
				   P4 = ~P4;		/* 黄灯闪烁 */
				   cycle ++;				 
				   count3 &= 0x00;
				  }
				 
				 if(cycle == 0x08)
				 {
				 	P4 &= 0xfe;	/* 黄灯灭 */
				 	P2 |= 0x01;	/* 红灯亮 */
				 	cycle &= 0x00;
				 	state &= 0x00;
				 	state |= 0x01;	/* 转到红灯状态 */
				 	printf("Now red light shine.\n");
				 }
	
	} 
		
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -