📄 lib.c
字号:
/************************************************************/
/*功能描述:发送一个字节数据 发送的数据放在RXTXDATA中 */
/*函数说明:设定好参数后 通过 TIME0 发送数据 */
/*调用函数: */
/*全局变量: RXTXDATA */
/************************************************************/
void TX_BYTE (void)
{
BitCnt = 0xA;//1STA+8DATA+1结束
CCR0=TAR+Bitimem;
RXTXDATA |= 0x100;
RXTXDATA = RXTXDATA << 1;
CCTL0 = OUTMOD0 + CCIE;
while ( CCTL0 & CCIE ); // 等待发送结束
}
/************************************************************/
/*功能描述:准备接收一个字节数据 */
/*函数说明: */
/*调用函数: */
/*全局变量: */
/*输入: */
/************************************************************/
void RX_BYTE (void)
{
BitCnt = 0x8; // 接收数据长度
CCTL0 = SCS + CCIS0 + OUTMOD0 + CM1 + CAP + CCIE;
//while ( CCTL0 & CCIE );
}
/************************************************************/
/*功能描述:初始化 */
/*函数说明: */
/*调用函数: 无 */
/*全局变量: spanl int_sum */
/*输入: */
/************************************************************/
void init(void)
{
WDTCTL=WDT_ARST_1000;
FLL_CTL0 |= XCAP14PF;
P1IES|=BIT5;//下降沿有效
P1IE|=BIT5;//开脉冲中断
P1IES&=~BIT2;//上升沿有效
P1IE|=BIT2;//开上电检测中断
TACTL = TASSEL_1 + MC_2;//ACLK
CCTL0 = OUT;
P1SEL = TXD + RXD; //P1.0,1.1定为外设
RX_BYTE();//串口接收初始化
CCR1=TAR+time_20msl;
CCTL1=CCIE;//开定时器1,定时200MS
LCD_CLR();//液晶清零
/*WRNBYTE_I2C(PEG1,addr_who,&wt_who[4],4);//存整数+小数地址
WRNBYTE_I2C(VAL_PEG,wt_who[7],wt_who,4);//存后两位
WRNBYTE_I2C(PEG1,a_addr,&addr,1);//读addr+span+const
WRNBYTE_I2C(PEG1,constant_addr,constant,3);
WRNBYTE_I2C(PEG1,show_mode_addr,&show_mode,1);
WRNBYTE_I2C(PEG1,lcd_show_addr,&lcd_show,1);
WRNBYTE_I2C(PEG1,password_addr,password,3);
WRNBYTE_I2C(PEG1,uart_mode_addr,&uart_mode,1);*/
RDNBYTE_I2C(PEG1,addr_who,wt_who+4,4);//读整数+小数地址
RDNBYTE_I2C(VAL_PEG,wt_who[7],wt_who,4);//读小数
RDNBYTE_I2C(PEG1,a_addr,&addr,1);//读地址
RDNBYTE_I2C(PEG1,constant_addr,constant,3);//读表常数
RDNBYTE_I2C(PEG1,show_mode_addr,&show_mode,1);//读显示模式
RDNBYTE_I2C(PEG1,password_addr,password,3);//读密码
RDNBYTE_I2C(PEG1,lcd_show_addr,&lcd_show,1);//读LCD显示模式
RDNBYTE_I2C(PEG1,uart_mode_addr,&uart_mode,1);//读串口发送模式
RX=wt_who[3]&0x0f;//读10L位上的值
span1=SPAN;//脉冲宽度限制
addr&=0x07;
show_mode&=0x01;
if(lcd_show==0x55)
{
LCDCTL = LCDP1+LCD4MUX+LCDON; // 4-Mux LCD, segments S0-S19
BTCTL = BTFRFQ1; // Set freqLCD = ACLK/128
P5SEL = 0xFC; // Set Rxx and COM pins for LCD
LCD_OUT(wt_who);//显示
if(dir_cnt<5){dir_cnt++;} else {dir_cnt=0;}
LCDMEM[1]&=0xf0;
LCDMEM[1]|=(dir[dir_cnt]&0x0f);
LCDMEM[0]=dir[dir_cnt]|0x0f;
}
else
{
LCDCTL=0;
BTCTL=0;
P5SEL=0;
}
rest=0;
WDTCTL=WDT_ARST_1000;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -