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

📄 chk9033.c

📁 MSP430F14X的读取ED9033电表模块编程实现
💻 C
字号:
//本程序是用来初始化9033的,发一条读地址的命令给9033,看它返回的地址是多少
//2003.6.11
#include "msp430x14x.h"

void Init(void);
void Txd(void);

#define uint unsigned int
#define uchar unsigned char
uint Txd0data[7]={0x4c,0x57,0x0,0x20,0x00,0x0,0x0d};
uint Rxd0data[10];
uint Addr_9033=0;
uchar Txd0flag=1;	//发送标志
/*Rxd0flag用来判断有没有接收中断产生,如果没有接收,
说明9033对发给它的数据没有响应,表明9033没有打开。*/
uchar Rxd0flag=0;	//接收标志
uchar equflag=0;	//地址相等标志

void main(void)
{
	WDTCTL=WDTPW+WDTHOLD;
	Init();
	_EINT();
	//do                    //这里应该用do-while循环还是while的死循环
	//{
		if(Txd0flag==1)
	    Txd();
	else
	    while(1);
	    
	//}
	while((Addr_9033<0x100)&&(equflag==0)&&(Rxdflag==1));
	
        /*如果是因为没有接收中断产生或者地址没有找到而跳出的程序;表示没有打开9033*/
        if((Addr_9033>=0x100)||(Rxd0flag==0))
        //9033没有打开
        if(equflag==1)
        {//9033返回了正确的地址值,初始化成功
        return(Addr_9033);}
}

void Txd(void)
{
	uchar i,j=0;
	Rxd0flag=0;
	if(Addr_9033<0x100)
	{
		Txd0data[2]=Addr_9033;
		for(i=2;i<5;i++)
		    j+=Txd0data[i];
		Txd0data[5]=j;
	}
	P1OUT|=0x10;                 //设置输出1时控制485为发送
	for(i=0;i<7;i++)
	{
		TXBUF0=Txd0data[i];
		while((UTCTL0&0x01)==0);
	}
	Addr_9033+=1;
	Txd0flag=0;
	P1OUT&=~0x10;                 //设置输出0时控制485为接收,发送结束就马上变成接收	
}

interrupt[UART0RX_VECTOR] void UART0RX(void)    
{
	uchar k=0;

	Rxd0data[0]=RXBUF0;
	if(Rxd0data[k]!==0)
	{
		k++;
		Rxd0data[k]=RXBUF0;
	}
	
	if((Txd0data[0]==Rxd0data[0])&&(Txd0data[1]==Rxd0data[1])&&
	   (Txd0data[2]==Rxd0data[2])&&(Txd0data[3]==Rxd0data[3])&&
	   (Txd0data[4]==Rxd0data[4])&&(Txd0data[5]==Rxd0data[5])&&
	   (Txd0data[6]==Rxd0data[6]))
	equflag=1;
	
	Rxd0flag=1;
	Txd0flag=1;
}
	
void Init(void)
{
	P1DIR|=0x10;		//485接收发送控制引脚
	UCTL0 &=~SWRST;		//USART允许
	UCTL0 |=0x10;           //8数据位
	UBR00=0x03;
	UBR10=0x00;             //9600bps,9033的默认值是9600
	UMCTL0=0x4A;            //位调整
	UTCTL0=0x10;            //ACK
	P3DIR=0x10;             //P3.4 TXD;P3.5 RXD
	P3SEL=0x30;             //P3.4,P3.5为USRT0用
	IE1 |=URXIE0;           //接收中断允许
	ME1 |=0xC0;             //发送允许
}    
        

⌨️ 快捷键说明

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