[Atmel] 用AtmelStudio6.2跑mega16例程(57)8255扩展

[复制链接]
1133|0
 楼主| ddllxxrr 发表于 2014-11-21 21:48 | 显示全部楼层 |阅读模式

本例通过8255接口扩展芯片控制8只集成式七段数码管。PC口增加3个按键。
8255的3个I/O端口和一个命令端口的定义。由于8255的接口地址仅需要单片机地址端口的高8位控制,这8位地十中实际仅使用的低3位,它们分别对应CS、A1、A0,其中A1与A0地址线可选择8255的4个端口地址之一。

Atmel Studio6.2的截图:



程序清单:
  1. /*
  2. * GccApplication20.c
  3. *
  4. * Created: 2014-11-21 21:19:28
  5. * Author: Administrator
  6. */

  7. /*
  8. * GccApplication1.c
  9. *
  10. * Created: 2014-11-21 6:15:19
  11. * Author: Administrator
  12. */

  13. #define F_CPU 2000000UL
  14. #include <avr/io.h>
  15. #include <avr/interrupt.h>
  16. #include <util/delay.h>
  17. #include <stdint.h>

  18. #define PA (uint8_t*)0xFF00
  19. #define PB (uint8_t*)0xFF01
  20. #define PC (uint8_t*)0xFF02
  21. #define COM (uint8_t*)0xFF03

  22. const uint8_t SEG_CODE[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};

  23. uint8_t Disp_Buffer[] = {1,2,10,3,0,5,0};

  24. uint8_t Pre_Key_State = 0x00;

  25. void Key_Process()
  26. {
  27. uint8_t Key_State,t;
  28. Key_State = *PC;
  29. if(Key_State==Pre_Key_State)return;
  30. Pre_Key_State = Key_State;
  31. switch(Key_State)
  32. {
  33. case(uint8_t)~_BV(0):
  34. t = Disp_Buffer[0] * 10 + Disp_Buffer[1];
  35. if(++t == 24) t = 0;
  36. Disp_Buffer[0] = t/10;
  37. Disp_Buffer[1] = t%10;
  38. break;
  39. case (uint8_t)~_BV(2):
  40. t = Disp_Buffer[3] * 10 + Disp_Buffer[4];
  41. if(++t == 60) t = 1;
  42. Disp_Buffer[3] = t /10;
  43. Disp_Buffer[4] = t % 10;
  44. break;
  45. case (uint8_t)~_BV(4):
  46. t = Disp_Buffer[6] * 10 + Disp_Buffer[7];
  47. if( ++t == 60) t=1;
  48. Disp_Buffer[6] = t /10;
  49. Disp_Buffer[7] = t %10;
  50. break;
  51. default:
  52. break;

  53. }
  54. }




  55. int main(void)
  56. {
  57. uint8_t i;
  58. MCUCR |= 0x80;
  59. * COM = 0B10001001; //8255工作方式选择


  60. while(1)
  61. {
  62. for(i=0;i<8;i++)
  63. {
  64. *PB = _BV(i);
  65. *PA = (uint8_t)SEG_CODE[Disp_Buffer[i]];
  66. _delay_ms(2);
  67. Key_Process();
  68. }
  69. //TODO:: Please write your application code
  70. }
  71. }

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:http://shop34182318.taobao.com/ http://shop562064536.taobao.com

2404

主题

7001

帖子

68

粉丝
快速回复 在线客服 返回列表 返回顶部