📄 m.c
字号:
//#include <stdio.h>
//#include <string.h>
#include "Board.h"
#include "Comm.h"
#include "AD7730.h"
#include "LCD.h"
//======================================================
extern EPPFLAGS bEPPflags;
extern WEIGHT_TEMP bWEIGHT_TEMP;
extern unsigned char idata CommBuf[8];
extern unsigned char idata DisplayBuffer[16];
extern code unsigned char ManLog[16];
//======================================================
code void (*CommandRequest[])(void) =
{
Read_Data,
Write_Data,
Get_Status,
Set_Status,
reserved,
};
void Delay(unsigned int iTime)
{
unsigned char u;
while (iTime!=0){
u=200;
while (u!=0) {
u--;
}
iTime--;
}
return;
}
//======================================================
void InitPort(void)
{
KEYPORT=WAITBYTE;
P1=0xff;
P2=0xff;
P3=0xff;
MCU_STATLED=0; //灭灯
MCU_DLD=0;
MCU_SCS=1;
MCU_SCK=0;
KEYPORT=0x0F; //输出全部为低,输入全部为高
return;
}
void InitComm(void)
{
TR2=0;
T2MOD=0x00;
RCAP2L=0xff;
RCAP2H=0xff; //115200bps
T2CON=0x3c; //rclk=1,tclk=1,exen2=1,tr2=1
TR2=1;
SM2=1; //使能多机通讯功能
REN=1; //使能接收
MCU_DE=0; //使485接收器位于接收
return;
}
void InitInterupts()
{
DISABLE_INTERRUPT;
ES=1;
EX0=1;
EX1=1;
IT0=0;
IT1=0;
ET0=0;
ET1=0;
ET2=0;
return;
}
void InitTimer(void)
{
TMOD=0x11; //T0,T0均为16位定时器
TCON=TCON &0x0F;
return;
}
void reserved(void)
{
}
//获取设备状态
void Read_Data(void)
{
}
void Write_Data(void)
{
}
void Get_Status(void)
{
}
void Set_Status(void)
{
}
//======================================
void main(void)
{
unsigned long idata lTmp;
InitPort();
WDTC = 0x06; //禁止看门狗工作
AD7730_Reset();
MCU_BL =0; //打开背光
LCD_DisplayString(ManLog); //显示LOGO
InitComm();
InitTimer();
InitInterupts();
Delay(100);
// AD_WriteFilterReg(0x80003F);
AD_WriteOffsetReg(SystemZeroCalibration(10));
AD_WriteOffsetReg(0x84009d);
lTmp=AD_ReadGainReg();
lTmp=AD_ReadOffsetReg();
PutHexDisplayCode(1,lTmp);
Delay(500);
LCD_Clear(); //清屏
AD_WriteModeReg(0x3080); //连续转换模式,无符号,5V基准电压
bEPPflags.value=0; //清除所有标志
bWEIGHT_TEMP.bTimes=0;
bWEIGHT_TEMP.lTempWeight=0;
bWEIGHT_TEMP.fNewWeight=0;
bEPPflags.bits.DeviceStat = NoLogin_Mode;
bEPPflags.bits.CommStat=Receiving_Handshake;
ENABLE_INTERRUPT;
do{
DISABLE_INTERRUPT;
if (bEPPflags.bits.CommStat!=Wait_Process) {
PutStatusCode(0);
if (bWEIGHT_TEMP.fNewWeight) {
bWEIGHT_TEMP.fNewWeight=0;
PutHexDisplayCode(2,bWEIGHT_TEMP.lNowWeight); //刷新重量显示缓冲
}
}
else {
PutStatusCode(1);
lTmp=CommBuf[1];
lTmp=lTmp<<8;
lTmp=lTmp+CommBuf[0];
PutHexDisplayCode(1,lTmp);
/*
if (CommBuf[1]==0) {
}
bEPPflags.bits.CommStat=Transmiting_Handshake;
SM2=0;
EntryTx();
(*CommandRequest[CommBuf[1]])();//调用函数
*/
}
LCD_DisplayDirect();
/*
MCU_BL =0; //打开背光
while(1);
*/
ENABLE_INTERRUPT;
}while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -