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

📄 5g14433.c

📁 用c语言编写的5G14433的数模转换
💻 C
字号:
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar bdata result1;
uchar bdata result2;
sbit flag0=result1^7;          //定义在位寻址区,表示结果正负、一位千位数、百位四位BCD码
sbit thou=result1^4;           //表示四位十位BCD、四位个位BCD
sbit ds1=P1^4;                 //千位选通位
sbit ds2=P1^5;                 //百位选通位
sbit ds3=P1^6;                 //十位选通位
sbit ds4=P1^7;                 //个位选通位
sbit q0=P1^0;                  //结果BCD码输出位
sbit q1=P1^1;
sbit q2=P1^2;
sbit q3=P1^3;
void main()
{
  uchar m;
  bit flag1;                   //过量程及欠量程标志位
  m=0x00;
  result1=0x00;
  result2=0x00;
  for(;;)
  {
    if(!ds1) continue;         //如果ds1=0,则千位未选通,等待
    else break;                //若ds1=1,千位选通,跳出循环
  }
  if(q0) goto loop;            //若q0=1,表示过欠量程,标志置1结束
  else flag1=0;
  if(q2) flag0=0;              //若q2=1,表示结果为正数,符号位为0
  else flag0=1;
  if(q3) thou=0;               //若q3=1,表示千位数为0
  else thou=1;
  for(;;)
  {
    if(!ds2) continue;         //判断百位是否选通
    else break;
  }
  m=P1;                        //将百位BCD码送入result1低4位
  m=m&0x0f;
  result1=result1|m;
  for(;;)                      //判断十位是否选通
  {
    if(!ds3) continue;
    else break;
  }                            //将十位BCD码送入result2高四位
  m=0x00;
  m=P1;
  m=m<<4;
  result2=m;
  for(;;)                      //判断个位是否选通
  {
    if(!ds4) continue;
    else break;
  }                            
  m=0x00;                      //将个位BCD码送入result2低4位
  m=P1;
  m=m&0x0f;
  result2=result2|m;
  loop:
  flag1=1;
}



⌨️ 快捷键说明

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