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

📄 952.c

📁 16C554VX1128MAX4359-MAX4456P89LPC952 驱动开发
💻 C
字号:
#include <REG952.H>
#include <intrins.H>
#include "16C554.h"
#include "uart.h"
#include "T0.h"

#define uchar unsigned char
#define uint unsigned int

#define SIZE2 10
extern uchar over, d554,s[8];

static bit cmdflag2=0;
static uchar check_sum2,command2[SIZE2],cmdpos2;

void protocol2(uchar cmd2)
{		
	if(cmdflag2 == 0)
	{
		TR0=1;
		TH0=0x00;	 //	11.8ms	T0重装初值
		TL0=0x00;
		command2[0] = cmd2;
		cmdpos2 = 1;
		cmdflag2 = 1;
		check_sum2=command2[0];	
	} 
	else 
	{
		command2[cmdpos2] = cmd2;
		if(cmdpos2 <SIZE2-1)		//表明数组没有溢出
		{	 	
			check_sum2 += command2[cmdpos2];			
		}
		else 	//数组溢出
		{
			over=1;
			check_sum2 += command2[cmdpos2];			
			cmdflag2 = 0;
		}		
		cmdpos2++;
	}	
} 
//主函数
void main(void) 
{	 
	uchar chr,h,rt2;
	P0M1=0x00;	 //配置P0为准双向口
	P0M2=0x00;  
	P1M1=0x0e;   //P1.6,P1.7接Serial_M1,Serial_M2配置为推换输出        
    P1M2=0xcd;   //端口初始化P1.0,P1.1分别为推挽输出和输入,P1.2 1.3为开漏输出
	P1M1=0x10|P1M1;	//P1.4设置为中断输入
	P1M2=0xEF&P1M1;
	P2M1=0x00; //P2设置为推挽输出方式
    P2M2=0x3F;
	Serial_M1=0; //将扩展的八个串口都定义为RS232
	Serial_M2=0; 
	Serial_M3=0; 
	Serial_M4=0; 
	Serial_M5=0; 
	Serial_M6=0; 
	Serial_M7=0; 
	Serial_M8=0;
//P4.4=nWR P4.5=nRD P4.6=WR P4.7=LATCH 
	P4M1=0x08; //uart1,P4.2设置为推挽输出方式	P4.3为输入 其它为推挽输出
	P4M2=0xFB;
	P5M1=0x00;           
    P5M2=0xFF;	//P5设置为推挽输出方式

	T0_init();

	EA=1;   //开总中断
	IT1=0;   //外部中断1低电平触发中断
	EX1=1;   //外部中断1使能位
	IP0H=0x14;	//设置外部中断优先级为2级,UART0接收中断为3级
	IP0=0x10;

	for(h=0;h<8;h++)
	{
		SC16C554_SET(s[h],38400); 
		SC16C554_Write(s[h]|THR, 0xff);
	}
	UART0_Init(); //串口初始化

	while(1)
	{  	
		rt2=com_getchar554(&chr);
		if(rt2==1)
		{
			protocol2(chr);	
		} 
		if(over)
		{		
			uchar r;
			TR0=0;
			cmdflag2=0;
			com_putchar(d554+1);
		 	for(r=0;r<cmdpos2;r++)
			{
			 	com_putchar(command2[r]);
			}
			com_putchar(check_sum2);
			over=0;
		} 
	}	 	
}

⌨️ 快捷键说明

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