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

📄 main.c

📁 一些用于电话管理的pc机下位机程序
💻 C
字号:
//ok
//此程序通过RS-232接口来完成计算机和单片机通信
//此程序首先发送测试数据55H,再通过中断实现数据的接收和发送
//程序的调试可以用"串口调试助手V2.1"辅助完成

#include	"p18cxxx.h"

//#pragma config OSC = HS, OSCS = OFF
#pragma config OSC = XT, OSCS = OFF
#pragma config PWRT = ON
#pragma config WDTPS =512
#pragma config CCP2MX = ON
#pragma config MCLRE = OFF
#pragma config BOR = ON   //RC2 OK
#pragma config BORV = 42
#pragma config WDT = ON
#pragma config LVP = OFF



extern void	make_LED(void);
extern void	make_MOS(void);

unsigned  long temp_f;
unsigned  float an0,an1,an2,an3,an4,an5,an6,an7,an8,an9,an10,an11;
union adres
{
	unsigned  int   y;
    unsigned  char  adre[2];
}adresult;  

unsigned  char buf_RCREG;
unsigned  char temp8u;

void	InterruptHandlerHigh(void);
 
//初始化程序  
void	RS232_initial(void)
{
	SPBRG=25;				//选择传输波特率为9600bps
	TXSTA=0X04;				//选择异步高速方式传输8位数据
	RCSTA=0X80;				//允许同步串行口工作
	TRISC=0XC0;				//将RC7,RC6设置为输入,断绝与外接电路的连接
	BAUDCONbits.BRG16=0;
	TXSTAbits.TXEN=1;			//发送允许
	RCSTAbits.CREN=1;			//接受数据允许
	PIE1bits.RCIE=1;			//接收中断使能
	INTCON=0XC0;			//总中断和外围中断允许
}

//高优先级中断向量
#pragma code InterruptVectorHigh=0x08
void	InterruptVectorHigh (void)
{
  _asm
    goto InterruptHandlerHigh 		//跳到中断程
  _endasm
}

//高优先级中断服务程序
#pragma code
#pragma interrupt InterruptHandlerHigh
void	InterruptHandlerHigh ()
{
	while(PIR1bits.RCIF==1)		//若接收中断标志不为1,则为误操作,返回
	{
		buf_RCREG=RCREG;  			//接收命令
   	     TXREG=0X55;	
	}
}
 

//主程序
void main()
{   TRISE=0;
	PORTE=0;
	TRISD=0;
	PORTD=0;
    TRISF=0xFF;    
	TRISA=0xFF;            		//设置为输入方式                 
	RS232_initial();		//RS232初始
    INTCONbits.PEIE=1;         	//外围中断允许
    RCONbits.IPEN=1;             	//使能中断优先级
    INTCONbits.GIE=1;             	//总中断允许
	//TXREG=0X55;				//发送数据55H进行测试
	for(;;){
  	_asm CLRWDT _endasm 
    	if(buf_RCREG!=0xff){
			temp8u=buf_RCREG; //取命令,
			temp8u&=0xF0;
			switch(temp8u){
				case 0x00: break;	
				case 0x20: make_LED();break;  
				case 0x30: make_LED();break;        //50mA 输出
				case 0x40: make_MOS();break;
				case 0x50: make_MOS();break;		//MOS 输出
			}
		buf_RCREG=0xff;
		}
	}
}

⌨️ 快捷键说明

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