微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 来大神啊。小白求教这个程序如何运行。。

来大神啊。小白求教这个程序如何运行。。

时间:10-02 整理:3721RD 点击:
白的不能再白的小白求教这个程序怎么运行,先定义什么后循环什么。
给我说说啊。
#include <reg52.h>
#include <intrins.h>
#include <stdlib.h>
#include<absacc.h>                                                                  
#define uchar unsigned char
#define uint unsigned int
sbit SDO = P0^4;//数据输出口
sbit ADD = P0^5;//通道选择
sbit CS  = P0^6;//启动
sbit CLK = P0^7;//时钟时序
//延时
void delay(unsigned char t)
{
  while(t--);
}
//读AD中的数据
unsigned int get_data(unsigned char ADDR)
{
          unsigned char i;
        unsigned int temp=0;
        ADDR <<= 4;//4有效地址左对齐
          CLK = 0;
          CS=1;
          CS = 0;  
          delay(1);
          for (i=0;i<10;i++)
                  {       
                          temp <<= 1;
                        ADD=(bit)(ADDR&0X80);
                          CLK = 1;
                        SDO=1;
                        temp =temp^SDO;
                        CLK = 0;
                    ADDR <<= 1;
                  }
          delay(1);
          CS=1;
          return(temp);
}
//数码管段码------
uint code seg[]={
0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff,0x1ff,0x3ff,0x7ff};
uint    num[]={0,2,3,4,5,6};
//位码端口
sbit      q1=P1^0;
sbit      q2=P1^1;
sbit      q3=P1^2;
sbit      q4=P1^3;
sbit      q5=P1^4;
//定义变量
uint  ad[]={1,2,3,4,5}; //
uint  adn=0;//
uint  adhc=0;//
//延时函数ms
void _delay_ms(uint t)
{
   uint i,j;
   for(i=0;i<t;i++)
     for(j=0;j<120;j++);
}
//延时函数us
void _delay_us(uchar t)
{
   while(t>0)t--;
}
//数码管显示
void dis()
{
  q1=0;
  q2=0;
  q3=0;
  q4=0;
  q5=0;
  //加载到led------------------------------------
  P2=~(uchar)(seg[ad[adn]]&0x00ff);
  adhc=seg[ad[adn]]&0x0f00;
  P3=~(uchar)(adhc>>3);
  //移位------------------------------------
  adn=(adn+1)%5;  
  if(adn==0){q1=1;}
  if(adn==1){q2=1;}
  if(adn==2){q3=1;}
  if(adn==3){q4=1;}
  if(adn==4){q5=1;}
  //延时读取AD数据------------------------------------
  _delay_us(100);
  ad[adn]=get_data(0)/85;
}
//-----------------------
void main()   
{
  _delay_us(10);
  _delay_ms(10);
  while(1)
  {
   dis(); //显示
  }
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top