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

📄 mypic16f73.c

📁 基于PIC单片机的网络监控键盘控制 同时附加了一个本人制作的常用PIC单片机初始化头文件
💻 C
字号:


#include <pic.h>
#include "MyPIC16F73.h"


#define fosc  4000000  //晶振频率,4M
#define BaudRate 9600  //波特率




//*************************************
//函数预定义
//*************************************


void Delay(uchar t)       //t=0时,空跳,19
{  
	uchar i;               //t=1时,30  t=2时,41 增加1延时增加11us
   	for(i=0;i<t;i++)       //t=ff时,2824
     	CLRWDT();            //t=5a时,1000
}

/*void Delay1(uchar t)    //延时头需要10
{  
	uchar i;
   	for(i=0;i<t;i++)
      	CLRWDT();

}*/
/*void  Send232(uchar data)
{
	TXREG=data;
 	do
 	{;}while(TRMT==0);       //等待发送完成
}*/
void  Send232(uchar data)
{
	while(!TRMT);//等待上次发送完成
	TXREG=data; 	
}

//*************************************/
//
//             初始化
//
//*************************************/
void  Initial()             //系统初始化程序
{
    //AD初始化
    ADCON1=0b00000111;  //A口用作数字口

    //IO初始化
    TRISA=0b00000000;   //A均为输出,液晶数据0~5
    TRISB=0xe0;   //B口5、6、7为输入,其它为输出
    TRISC=0b11000000;  //C口6、7为232信号
    PORTA=0b00111111;   //初始化各个IO口电平
    PORTB=0b11111111;   //
    PORTC=0b11100000;   //控制485总线
	//计数器初始化===============================================================================================================
	//OPTION状态寄存器,中断使能
	//   /RBPU 			INTEDG 			T0CS		 	    T0SE 		       PSA 			PS2	PS1	PS0
	//  RB弱上拉     中断边沿选择    TMR0时钟源选择     TMR0时钟沿选择     预分频选择位     预分频比率
	// 低电平有效      1:上升沿    1:外部 RA4/T0CKI	 1:高到低          1:给WDT       
	//                              0:内部时钟          0:低到高          0:给TMR0
    OPTION=0x0f;      //TMR1预分频用做WDT,128分频
	//T1CON状态寄存器
	//    — 	—		T1CKPS1	T1CKPS0  	   T1OSCEN	 			T1SYNC 					TMR1CS 					TMR1ON
	//                    TMR1预分频      TRM1振荡器使能位    使用内部时钟时不用理       TMR1时钟源选择			   TMR1开关
	//               																	  1:外部时钟
	//																					  0:内部时钟(fosc/4)
    T1CON=0B00010000;   //TMR1工作在定时模式,预分频为1:8
	//T2CON状态寄存器
	//    — TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0		TMR2ON	   T2CKPS1 T2CKPS0
	//                  TMR2后分频            TMR2开关        TMR2预分频
	//               																	 
    T2CON=0x00; 
    //PR2=104;        //9600的波特率
	//R232初始化===============================================================================================
	//TXSTA状态寄存器
	//    CSRC       TX9	  TXEN	    SYNC      -      BRGH                TRMT      TX9D
	// 时钟源选择  发送位数  发送使能  串口模式      高波特率选择           TRM状态   发送的第9位
	// 异步不用理  1:9位			   1:同步	  1:高  b=fosc/(64(X+1))	1:空
	//             0:8位              0:异步	  0:低  b=fosc/(16(X+1))	0:满
    TXSTA=0b00100110; //异步方式、使能发送、八位字长、高波特率。
	// 波特率设定    
    SPBRG=fosc/BaudRate/16-1;     //Baud Rate = Fosc/(16(SPBRG+1)) = 9600
	//RCSTA状态寄存器
	//    SPEN       RX9	    SREN	    CREN      -      FERR        OERR       RX9D
	// 串口使能位  接收位数    异步未用  异步接收使能       帧出错       溢出    接收的第9位
	//             1:9位			      	  
	//             0:8位                 	  
    RCSTA=0b10000000; //使能串口、关闭接收。
                      //发送:数据装入TXREG后开始发送
                      //接收:接收到后从RCREG中读数据
    //中断初始化=========================================================================================================
	//PIE1状态寄存器,中断使能
	//    PSPIE       ADIE	    RCIE	    TXIE         SSPIE         CCP1IE       TMR2IE        TMR1IE
	//   并口中断    AD中断    接收中断   发送中断   同步串口中断   CCP1模块中断  定时器2中断   定时器1中断
	//   73无此位        			      	  
	//                	  
    PIE1=0b00000001;   //TMR1中断
	//INTCON状态寄存器,中断使能
	//    GIE			PEIE		TMR0IE		INTIE			RBIE		TMR0IF		INTF		RBIF
	//  全局中断     外围设备中断                       RB7~RB4电平变化中断
	//        			      	  
	// 
	RBIE=1;	//使能端口B中断
    PEIE=1;  //使能中断
    GIE=1;//GIE=1;
	PIR1=0;  //清除断标志

}

⌨️ 快捷键说明

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