历史上的今天
今天是:2024年12月26日(星期四)
2019年12月26日 | AVR单片机读写CPLD程序实例(ATmega128程序案例)
2019-12-26 来源:elecfans
项目中需要使用CPLD完成一部分算法设计,参数由AVR给出,因此需要完成AVR和CPLD的通信。因此写了一个测试程序。CPLD挂在AVR的数据和地址总线上,AVR使用ATmega128,在CPLD中设置几个寄存器,通过AVR读写寄存器来实现两者之间的通信。
Mega128的外部存储空间从0X1100开始,因此只需要配置相应的寄存器后读取或者写入相应的地址就可以,程序比较简单,注释中都有说明,仅供参考。
/*******************************************************************
名称:mian.c
功能:测试AVR与CPLD的通信,将数据写入CPLD中配置的寄存器,然后读出,
通过串口输出做比较
作者:emouse
时间:2011.1.4
版本:1.0
注意:无
********************************************************************/#include"avr/io.h"
#include"avr/interrupt.h"
#include"util/delay.h"
#define SetBit(Port,N) (Port|=(1<
#define ClrBit(Port,N) (Port&=~(1<
#define ReverBit(Port,N) (Port^=(1<
#define GetBit(Pin,N) ((Pin>>N)&0x01) //读取IO某一位
unsigned char data;
void XRAM_example(void)
{
unsigned char *q =0x1100; //寄存器1
unsigned char *m =0x1101; //寄存器2
unsigned char *p =0x1102; //寄存器3
PORTD=0XFF;
DDRD=0XFF;
DDRC = 0xFF; //默认情况下端口C用做高地址,可以每只寄存器把端口C释放
PORTC = 0x00;
*q= 0xCC; //向寄存器1中写入数据,CPLD中自动将寄存器1的值付给寄存器3
data=*p; //独处寄存器3中的值,在循环中用串口输出
}
void USART0_Init(void)
{
UCSR0A=0x20; //波特率不加倍,单机通信模式
UCSR0B=0x18; //中断不使能,允许发送和接收
UCSR0C=0x06;//异步模式,无校验,8位数据,1位停止位
UBRR0H=0x00;
UBRR0L=51;//9600波特率 晶振8M
}
void USART0_SendByte(unsigned char data)
{
while(!(UCSR0A&(1<
UDR0=data; //发送数据
}
int main(void)
{
unsigned char i=0;
USART0_Init(); //初始化USART0接口
MCUCR=0xC0; //使能外部SRAM
XMCRA=0x00;
DDRA=0XFF;
PORTA=0XFF;
DDRE=0xff;
DDRD=0xff;
PORTD=0x00; //使能 CS A16 A17 =11
USART0_SendByte(0x88);
while(1)
{
ReverBit(PORTA,0);
XRAM_example();
_delay_ms(500);
USART0_SendByte(data);
}
}
史海拾趣
|
智能功率开关(IPS)在汽车应用环境中特别受欢迎,在这类环境里这些开关必须处理一些最恶劣的电器故障---包括地线丢失或偏移,电压尖峰,反接或电池开路以及负载突变。IPS 驱动从功率继电器和电磁阀到电机和灯的这些负载的同时,针对所有这些故障提 ...… 查看全部问答> |
|
美国南佛罗里达大学的研究人员已经开发出了一种可安装在轮椅上的机械臂,这种机械臂通过捕获用户的脑电波进行操作,从而可以帮助残疾人更好的完成日常生活。 这种机械臂的产生将会改变因脊椎受伤而全身瘫痪病人的生活。计算机接口由USF心理学教 ...… 查看全部问答> |
|
小弟吐血跪求各位大侠指点迷津 debuge e:\\ASM\\FIRST.EXE -R AX=0000 BX=0000 CX=0113 DX=0000 SP=0000 ...… 查看全部问答> |
|
突然有个想法,想给自己的汽车作个附件,估计还能开多久 主要是这样想的,一个传感器测量当前油量(夜面高度或者直接读油表) 隔5分钟测量一下,看下去了好多,然后用当前油量除一下,得出时间 但是上学时学得东西忘得差不多了,只记得好像有现 ...… 查看全部问答> |
|
百分加急freescale M13213 STOP3低功耗问题! 小弟最近在用freescale的M13213芯片做无线控制设备,设备有低功耗要求,为了满足要求,我使用了STOP3工作模式,用户手册给出的功耗是2UA,但是实际测试的时候发现有好几百UA,差别实在是太大了,查了多方的原因都没有找出根源。我测试STOP1,STOP2模 ...… 查看全部问答> |
|
如题: BSPs包为ep931x文件 我把BSPs的压缩包放在F:\\WINCE420\\PLATFORM的目录下,注(F:\\WINCE420是不是就是%WINCEROOT% ???) 然后在Manage Catalog Features Import F:\\WINCE420\\PLATFORM\\ep931x 下 ...… 查看全部问答> |




