求2401测试程序

neaman   2010-1-6 18:38 楼主
要MEGA16的,在ICC环境下编译的。谢谢!

回复评论 (6)

再不顶就沉了。。。
点赞  2010-1-6 19:01
我这有,楼主看看吧:
  1. #include
  2. #define uchar unsigned char
  3. #define uint  unsigned int
  4. #define Left  0x80
  5. #define Right 0x40

  6. unsigned char const Tab[]={0x14,0x9F,0x38,0x1A,0x93,0x52,0x50,0x1F,
  7.                           0x10,0x12,0x11,0xD0,0x74,0x98,0x70,0x71};
  8.                                                   
  9. void display();//负责把显示缓冲区的数据显示到数码管
  10. void process(uchar left,uchar right);//刷新显示缓冲区
  11. void delay(uint ticks);//延时
  12. uchar ShuMa[2];//显示缓冲区

  13. void  WriteEPROM(uint Address,uchar Data);
  14. uchar ReadEPROM(uchar Address);
  15. uchar temp=1000;

  16. void main()
  17. {
  18. uint Address=0;
  19. init_devices();
  20. //向0-511地址的EEPROM依次写入0--0xFF。共写满512字节EEPROM
  21. for(Address=0;Address!=512;Address++)WriteEPROM(Address,Address&0x0ff);
  22. while(1)
  23. {//把512字节的EEPROM数据依次读出来显示
  24.   for(Address=0;Address!=512;Address++)
  25.   {//读数据到显示缓冲区
  26.    process(ReadEPROM(Address)>>4,ReadEPROM(Address)&0x0f);
  27.    while(temp--) display();//显示
  28.    temp=1000;
  29.   }
  30. }
  31. }

  32. ////////////////////////////////
  33. void display()
  34. {
  35. PORTA=Left|Right;//关显示
  36. PORTC=ShuMa[0];  //输出数据
  37. PORTA=~Left;          //开左数码管
  38. delay(10);          //延时
  39. PORTA=Left|Right;//关显示
  40. PORTC=ShuMa[1];  //输出数据
  41. PORTA=~Right;          //开右数码管
  42. delay(10);          //延时
  43. }
  44. ///////////////////////////////////
  45. void process(uchar left,uchar right)
  46. {
  47. ShuMa[0]=Tab[left];//查表
  48. ShuMa[1]=Tab[right];//查表
  49. }
  50. /////////////////////////////////////
  51. void delay(uint ticks)
  52. {
  53. uchar i;
  54. while(ticks--)for(i=100;i!=0;i--);//约0.1mS
  55. }

  56. void  WriteEPROM(uint Address,uchar Data)
  57. {
  58. while(EECR&0x02);//等待EEWE为0
  59. EEARH=Address>>8;//写入高地址
  60. EEARL=Address&0x0ff;//写入低地址
  61. EEDR=Data;                        //写数据到EEPROM寄存器                         
  62. EECR|=0x04;                //置位EEMWE                                                                 
  63. EECR|=0x02;                //置位EEWE
  64. while(EECR&0x02); //等待EEWE为0
  65. }

  66. uchar ReadEPROM(uchar Address)
  67. {
  68. while(EECR&0x01);//等待EERE为0
  69. EEARH=Address>>8;//写入高地址
  70. EEARL=Address&0x0ff;//写入低地址
  71. EECR|=0x01;                //置位EERE,读数据
  72. while(EECR&0x01); //等待EERE为0
  73. return EEDR;      //返回数据
  74. }
点赞  2010-1-6 19:13
用的是 2400或2401;

楼主先好好看看,如果要完整的代码,我再上传eeworld吧
点赞  2010-1-6 19:15
还是发一下吧,嘿嘿谢谢咯
点赞  2010-1-6 21:07
引用: 引用 4 楼 bhf5196152 的回复:
还是发一下吧,嘿嘿谢谢咯


http://download.eeworld.net/source/1970599
你自己下载好好看下吧
点赞  2010-1-6 22:36
ding
点赞  2010-1-6 23:10
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复