|
程序用ICCAVR编译,用总线模式,用PROTEUS仿真看出AD输出有变化,但读入CPU再送显示时没有显示,(显示同样是用发光二极管);
原程序和仿真文件在附件中,为方便查看,贴出部分程序
#include <iom128v.h>
#include <macros.h>
#include <stdlib.h>
#include <stdio.h>
#include "ad574.h"
#define F_CPU 8000000
#define CTRL (*(volatile unsigned char *)0x2FFF)
//控制口
#define ADSEL (*(volatile unsigned char *)0x4FFF)
unsigned int AD574value;
unsigned char hByte;
unsigned char lByte;
void AD574Convert(void)
{
unsigned int MSB , LSB;
unsigned char I=0;
// Start a conversion with A0 and A/$C$ low.
// The convesion takes place on rising CE edge.
CTRL = 0x00;
ADSEL = 0x00;
// Wait until we have completed a conversion .
while(I!=0x01)//STS==1?
{
I=PINB&0X01;
//delay_nus(5);
}
// Set R/$C$ with A0 low and read the low byte.
CTRL = 0x02;
hByte = ADSEL;
//PORTF=hByte;
// Set R/$C$ with A0 high and read the high.
CTRL = 0x03;
lByte = ADSEL;
//PORTF=lByte;
MSB=(unsigned int)(hByte << 4);
LSB=(unsigned int)(lByte >> 4);
// adc_Res now has the converted data with 12-bit resolution.
AD574value= MSB + LSB;
PORTF=AD574value;
//return;
}
void main(void)
{
unsigned int delay;
MCUCR=0X80;
DDRF = 0xFF;
PORTF = 0xFF;
DDRB=0X00;
PORTB=0X00;
while(1)
{
AD574Convert();
for (delay=0; delay<10000; delay++);
}
}
我的AD输出接PA口,控制线用PC口的A13,A14,A14直接控制AD的CS脚,所以地址是4FFF以上为程序,请指点,谢谢
ICCAVR原程序和PROTEUS仿真文件ourdev_293333.rar(文件大小:33K) (原文件名:ourdev_291373.rar) |
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|