来大神啊。小白求教这个程序如何运行。。
时间: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(); //显示
}
}
给我说说啊。
#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(); //显示
}
}