📄 aa.c
字号:
#include<at89x52.h>
//显示1-8 0xbf00-0xbf07
//显示8,9 0xdf02,0xdf03
//ad 0xdf00(3,4电流,5,6电压)
//da 0xdf01
//开关量 P1_2,3输出 P1_4 ~ P1_7输入
#define kI1 1.0 //放大系数
#define kI2 1.0
#define kU1 1.0
#define kU2 1.0
#define dispAdd 0xbf00
#define dispAdd2 0xdf02
#define adAdd 0xdf00
#define daAdd 0xdf01
#define adBusy P1_0
char InBuff[16]; //输入缓冲区
char OutBuff[16]; //输出缓冲区
unsigned char InP; //输入指针
unsigned char OutP;
unsigned char RsTemp;
char xdata *xdataAdd;
unsigned char dispBuff[10];
unsigned char code segTab[16]=
{0x3F,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,
0x3F,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f};
char ad(char i);
void disp();
unsigned char I1=0,I2=0,U1=0,U2=0;//电流1,2;电压1,2
main()
{
//unsigned char i;
unsigned char KeyInOut;//
unsigned char Vout;//DA
while(1)
{
//I1=ad(3);
// I2=ad(4);
// U1=ad(5);
//U2=ad(6);
//I1=kI1*I1;
//I2=kI2*I2;
// U1=kU1*U1;
// U2=kU2*U2;
KeyInOut=P1;
disp();
xdataAdd=daAdd;
*xdataAdd=Vout;
TI=1;
}
}
char ad(char i)
{
xdataAdd=adAdd;
*xdataAdd=i;
while(!adBusy);
return *xdataAdd;
}
void disp()
{
char i;
dispBuff[0]=I1/100;
dispBuff[1]=I1/10%10;
dispBuff[2]=I1%10;
dispBuff[3]=I2/100;
dispBuff[4]=I2/10%10;
dispBuff[5]=I2%10;
dispBuff[6]=U1/10%10;
dispBuff[7]=U1%10;
dispBuff[8]=U2/10%10;
dispBuff[9]=U2%10;
xdataAdd=dispAdd;
for(i=0;i<8;i++)
{
if(i==1||i==4||i==6)
*xdataAdd=dispBuff[i]+0x80;
else
*xdataAdd=dispBuff[i];
xdataAdd++;
}
xdataAdd=dispAdd2;
*xdataAdd=dispBuff[8]+0x80;
xdataAdd++;
*xdataAdd=dispBuff[9];
}
void setRs()
{
}
intRs() interrupt 4
{
if(TI)
{
TI=0;
RsTemp=OutP>>1;
if(CY)
{
SBUF=(OutBuff[OutP]&0xf0)>>4+0x30;
}
else
SBUF=OutBuff[OutP]&0x0f+0x30;
}
else
{
RI=0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -