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

📄 time_s.c

📁 Microchip 公司16F648 芯片实现RS485通讯,符合Modbus通讯协议,可用PICC环境编译.文件完整,可供参考.
💻 C
字号:
//timer module
#include  "pic16f62xa.h"
#include  "pic.h"
#include  "typedefine_s.h"
#include  "extern_s.h"


bank1 uchar tag1ms;
//void TimeCntFun(void);

void time0init(void)
{
    OPTION |= 0b00000111;  //bit5 T0CS  清零为选定定时器模式;
    OPTION &= ~0b00111100; //bit4 T0SE  边缘选择;
    TMR0  =  0x80;         // ~~~`
   	T0IE = 1;              // enable timer interrupt.
                           //这句还需要考虑
}

// timebase module.
void time_mission (void)         //每500us时间到进入一次;
{
	static uchar Cnt100ms;
	bank2 static uchar varcou=0;
	bank2 static uint cnt500ms;
 	timeBase.bits.b1ms = 0;
	timeBase.bits.b10ms = 0;
    
	if(timeBase.bits.bt1ms) 
	{ 
		timeBase.bits.bt1ms = 0; 
		timeBase.bits.b1ms = 1; 
		if(receTimeOut>0) 
		{
			receTimeOut--; 
			if(receTimeOut==0 && receCount>0)
			{
				receCount = 0; 
				checkoutError = 0; 
			} 
		} //if(receTimeOut>0) 

		tag1ms = 1;	
			
		varcou++;
	    if(varcou>=4)
	    {
 			ledControl.bits.refurbish = 1;
				varcou = 0;
		}
		
		cnt500ms++;
		if(cnt500ms>=200)
		{
			cnt500ms = 0;
			ledControl.bits.once128ms = 1;
		}

	} //(timeBase.bits.bt1ms)
}   

 
 

////时间管理器,等到加通讯的时候再写吧!
//void TimeCntFun(void)
//{	
//	//接收延迟判断.
//    if(receTimeOut>0) 
//    { 
//       receTimeOut--; 
//       if(receTimeOut==0 && receCount>0)   //判断通讯接收是否超时 
//       { 
//        //   b485Send = 0;       //将485置为接收状态 
//		
//		   CREN = 0; 
//		   RCIE	= 0; 
//           receCount = 0;        //将接收地址偏移寄存器清零 
//           checkoutError = 0; 
//       } 
//    } 
 
//	if(UartSlaveDelayStruct.SendLastStatus.bits.LastByteCountTag)
//	{
//		if(4 == UartSlaveDelayStruct.SendLastCou++)
//		{
//			UartSlaveDelayStruct.SendLastCou = 0;
//			UartSlaveDelayStruct.SendLastStatus.bits.SendCountEndTag = 1;	
//		}
//	}
//	
//	//接受延迟20ms计时.
//	if(UartSlaveDelayStruct.ReceiveCountStatus.bits.ReceiveCountTag)
//	{
//	 //	if(20 == UartSlaveDelayStruct.RecevieCou++)
//	 	if( UartSlaveDelayStruct.RecevieCou++ > FrameOverCou)
//		{	
//			UartSlaveDelayStruct.RecevieCou = 0;
//			UartSlaveDelayStruct.ReceiveCountStatus.bits.ReceiveCountTag = 0;
//			UartSlaveDelayStruct.ReceiveCountStatus.bits.ReceiveCountOverflowTag = 1;
//		}	
//	}	
//}	








⌨️ 快捷键说明

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