您现在的位置: 主页 > MCU > 单片机技术应用 > AVR单片机读写CPLD -
本文所属标签:
为本文创立个标签吧:

AVR单片机读写CPLD -

来源: 网络用户发布,如有版权联系网管删除 2018-09-07 

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

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

本文引用地址: http://www.21ic.com/app/mcu/201806/764719.htm

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


  1. /*******************************************************************

  2. 名称:mian.c

  3. 功能:测试AVR与CPLD的通信,将数据写入CPLD中配置的寄存器,然后读出,

  4. 通过串口输出做比较

  5. 作者:emouse

  6. 时间:2011.1.4

  7. 版本:1.0

  8. 注意:无

  9. ********************************************************************/#include"avr/io.h"

  10. #include"avr/interrupt.h"

  11. #include"util/delay.h"

  12. #defineSetBit(Port,N)(Port|=(1<

  13. #defineClrBit(Port,N)(Port&=~(1<

  14. #defineReverBit(Port,N)(Port^=(1<

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

  16. unsignedchardata;

  17. voidXRAM_example(void)

  18. {

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

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

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

  22. PORTD=0XFF;

  23. DDRD=0XFF;

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

  25. PORTC=0x00;

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

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

  28. }

  29. voidUSART0_Init(void)

  30. {

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

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

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

  34. UBRR0H=0x00;

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

  36. }

  37. voidUSART0_SendByte(unsignedchardata)

  38. {

  39. while(!(UCSR0A&(1<

  40. UDR0=data;//发送数据

  41. }

  42. intmain(void)

  43. {

  44. unsignedchari=0;

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

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

  47. XMCRA=0x00;

  48. DDRA=0XFF;

  49. PORTA=0XFF;

  50. DDRE=0xff;

  51. DDRD=0xff;

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

  53. USART0_SendByte(0x88);

  54. while(1)

  55. {

  56. ReverBit(PORTA,0);

  57. XRAM_example();

  58. _delay_ms(500);

  59. USART0_SendByte(data);

  60. }

  61. }





              查看评论 回复



嵌入式交流网主页 > MCU > 单片机技术应用 > AVR单片机读写CPLD -
 

"AVR单片机读写CPLD -"的相关文章

网站地图

围观()