访问电脑版页面

导航:老古开发网手机版AVR单片机AVR单片机的应用

AVR单片机与CPLD的通信设计

导读:
关键字:
CPLD通信,AVR单片机,

项目中需要使用CPLD完成一部分算法设计,参数由AVR给出,因此需要完成AVR和CPLD的通信。因此写了一个测试程序。CPLD挂在AVR的数据和地址总线上,AVR使用ATmega128,在CPLD中设置几个寄存器,通过AVR读写寄存器来实现两者之间的通信。

Mega128的外部存储空间从0X1100开始,因此只需要配置相应的寄存器后读取或者写入相应的地址就可以,程序比较简单,注释中都有说明,仅供参考。

功能:测试AVR与CPLD的通信,将数据写入CPLD中配置的寄存器,然后读出,通过串口输出做比较。


/#include“avr/io.h”

#include“avr/interrupt.h”

#include“uTIl/delay.h”

#defineSetBit(Port,N)(Port|=(1《

#defineClrBit(Port,N)(Port&=~(1《

#defineReverBit(Port,N)(Port^=(1《

#defineGetBit(Pin,N)((Pin》》N)&0x01)//读取IO某一位

unsignedchardata;

voidXRAM_example(void)

{

unsignedchar*q=0x1100;//寄存器1

unsignedchar*m=0x1101;//寄存器2

unsignedchar*p=0x1102;//寄存器3

PORTD=0XFF;

DDRD=0XFF;

DDRC=0xFF;//默认情况下端口C用做高地址,可以每只寄存器把端口C释放

PORTC=0x00;

*q=0xCC;//向寄存器1中写入数据,CPLD中自动将寄存器1的值付给寄存器3

data=*p;//独处寄存器3中的值,在循环中用串口输出

}

voidUSART0_Init(void)

{

UCSR0A=0x20;//波特率不加倍,单机通信模式

UCSR0B=0x18;//中断不使能,允许发送和接收

UCSR0C=0x06;//异步模式,无校验,8位数据,1位停止位

UBRR0H=0x00;

UBRR0L=51;//9600波特率晶振8M

}

voidUSART0_SendByte(unsignedchardata)

{

while(!(UCSR0A&(1《

UDR0=data;//发送数据

}

intmain(void)

{

unsignedchari=0;

USART0_Init();//初始化USART0接口

MCUCR=0xC0;//使能外部SRAM

XMCRA=0x00;

DDRA=0XFF;

PORTA=0XFF;

DDRE=0xff;

DDRD=0xff;

PORTD=0x00;//使能CSA16A17=11

USART0_SendByte(0x88);

while(1)

{

ReverBit(PORTA,0);

XRAM_example();

_delay_ms(500);

USART0_SendByte(data);

}

}

来源:工程师周亮   作者:lhl545545  2019/6/3 15:24:00
栏目: [ AVR单片机的应用]

相关阅读

AVR单片机在蓄电池剩余电量测试仪中的应用

轻触式开关电路在AVR单片机中的应用

AVR单片机可控直流电源

AVR单片机与CPLD的通信设计

[转载]AVR单片机捕获中断实现红外线解码

以AVR单片机为控制核心的数字正弦逆变电源设计

基于AVR单片机的万年历程序设计

AVR单片机实现IC读卡的程序设计

设计干货精选:AVR单片机工业控制方案合集

性能稳定,传输效率高的AVR单片机OTG主从机系统设计

AVR单片机对开关电源的控制方法

AVR单片机的nRF24L01发送接收设计

基于AVR单片机的LED显示屏控制系统的研究

基于AVR单片机的医用智能输液系统

基于AVR单片机高精度电子秤设计

AVR单片机有什么特点?如何设计一个以AVR单片机为控制芯片的电子镇流器?

基于AVR单片机的便携式无线医疗点滴监控系统

自制AVR单片机解锁器

基于AVR单片机的多功能电源设计

基于AVR单片机的高精度频率调节器