欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4174|回復: 1
打印 上一主題 下一主題
收起左側

STC12CXX單片機片內EEPROM開機次數顯示

[復制鏈接]
跳轉到指定樓層
#
ID:79544 發表于 2016-7-28 09:59 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
STC12C5A60S2單片機片內EEPROM應用
  1. /*************************************************
  2.         功能:用STC12C5A60S2內部EEPROM記開機次數
  3.                   數碼管顯示
  4.                         根據慧靜電子改寫
  5.         單片機:STC12C5A60S2
  6.         晶  振:11.0592M
  7.         作者 :蘇義江
  8.         時間:2015-7-22
  9. *****************************************************/
  10. #include<reg52.h>
  11. #include"stc12ceeprom.h"
  12. //STC5Axx 系列 EEPROM 測試起始地址
  13. #define DATA_flash_START_address 0x0000


  14. sbit wei=P2^7;
  15. sbit duan=P2^6;
  16. uchar t,a=0,gewei,shiwei,bai;
  17. //uchar code table[]="0123456789";
  18. uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
  19.                                 0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,
  20.                                 0xa1,0x86,0x8e,0x89};//0到H共陽段碼

  21. void delay(uint x)
  22. {
  23.         uint z,j;
  24.         for(z=x;z>0;z--)
  25.         for(j=800;j>0;j--);
  26. }

  27. void main()
  28. {
  29.         delay(10);
  30. //        sector_Erase(0x0000);//擦除扇區
  31.         a=Byte_read(0x0000);//讀一個字節 從起始地址開始讀
  32.         a++;//計數變量自加1

  33.         if(a>=999)//加到999
  34.         a=0;
  35.         sector_Erase(0x0000);//擦除扇區
  36.         Byte_write(0x0000,a);//字節編程
  37.         gewei=a%10;
  38.         shiwei=a%100/10;
  39.         bai=a/100;       
  40.         while(1)
  41.         {
  42.                 wei=1;
  43.                 P0=0xfe;
  44.                 wei=0;
  45.                 P0=0xFF;
  46.                 duan=1;
  47.                 P0=table[bai];
  48.                 duan=0;
  49.                 P0=0xFF;
  50.                 delay(10);

  51.                 wei=1;
  52.                 P0=0xfd;
  53.                 wei=0;
  54.                 P0=0xFF;
  55.                 duan=1;
  56.                 P0=table[shiwei];
  57.                 duan=0;
  58.                 P0=0xFF;
  59.                 delay(10);

  60.                 wei=1;
  61.                 P0=0xfb;
  62.                 wei=0;
  63.                 P0=0xFF;
  64.                 duan=1;
  65.                 P0=table[gewei];
  66.                 duan=0;
  67.                 P0=0xFF;
  68.                 delay(10);
  69.         }
  70. }
復制代碼
  1. STC12CXX EEPROM.H文件
  2. #ifndef __STC12CEEPROM_H__
  3. #define __STC12CEEPROM_H__
  4. #include<intrins.h>
  5. #define uchar unsigned char
  6. #define uint unsigned int
  7. //用于STC12C2052
  8. //sfr  IAP_DATA   =0XE2;
  9. //sfr  IAP_ADDRH  =0XE3;
  10. //sfr  IAP_ADDRL  =0XE4;
  11. //sfr  IAP_CMD    =0XE5;
  12. //sfr  IAP_TRIG   =0XE6;
  13. //sfr  IAP_CONTR  =0XE7;
  14. //#define  WD1  0X46
  15. //#define  WD2  0XB9
  16. //用于STC12C5A60S2
  17. sfr  IAP_DATA   =0XC2;
  18. sfr  IAP_ADDRH  =0Xc3;
  19. sfr  IAP_ADDRL  =0Xc4;
  20. sfr  IAP_CMD    =0Xc5;
  21. sfr  IAP_TRIG   =0Xc6;
  22. sfr  IAP_CONTR  =0Xc7;
  23. #define  WD1  0X5A
  24. #define  WD2  0XA5
  25. //定義Flash 操作等待時間及允許IAP/ISP/EEPROM 操作的常數
  26. //#define ENABLE_ISP 0X80//晶振小于30M
  27. //#define ENABLE_ISP 0X81//晶振小于24M
  28. #define ENABLE_ISP 0X82//晶振小于20M
  29. //#define ENABLE_ISP 0X83//晶振小于12M
  30. //#define ENABLE_ISP 0X84//晶振小于6M
  31. //#define ENABLE_ISP 0X85//晶振小于3M
  32. uchar Byte_read(uint add);//讀一字節 調用前打開IAP
  33. void Byte_write(uint add,uchar ch);//字節編程調用前打開IAP
  34. void sector_Erase(uint add);//擦除扇區
  35. void IAP_Disable();//關閉IAP
  36. uchar Byte_read(uint add)//讀一字節 調用前打開IAP
  37. {
  38.         IAP_DATA=0X00;
  39. ////打開 IAP 功能, 設置Flash 操作等待時間
  40.         IAP_CONTR=ENABLE_ISP;
  41.         IAP_CMD =0X01;
  42.         IAP_ADDRH=add/256;
  43.         IAP_ADDRL =add%256;
  44.         IAP_TRIG  =WD1;//先送 5Ah,再送A5h 到ISP/IAP 觸發寄存器
  45.         IAP_TRIG  =WD2;//送完A5h 后,ISP/IAP 命令立即被觸發起動
  46.         _nop_();_nop_();
  47.         IAP_Disable();//關閉IAP
  48.         return (IAP_DATA);
  49. }
  50. //字節編程調用前打開IAP  寫
  51. void Byte_write(uint add,uchar ch)
  52. {
  53.         IAP_CONTR  =ENABLE_ISP;
  54.         IAP_CMD =0X02;//IAP/ISP/EEPROM 字節編程命令
  55.         IAP_ADDRH=add/256;//設置目標單元地址的高8 位地址
  56.         IAP_ADDRL =add%256;//設置目標單元地址的低8 位地址
  57.         IAP_DATA=ch;//要編程的數據先送進IAP_DATA 寄存器
  58.         IAP_TRIG  =WD1;
  59.         IAP_TRIG  =WD2;
  60.         _nop_();_nop_();
  61.         IAP_Disable();
  62. }
  63. //擦除扇區
  64. void sector_Erase(uint add)
  65. {
  66.         IAP_CONTR =ENABLE_ISP;
  67.         IAP_CMD =0X03;//IAP/ISP/EEPROM 扇區擦除命令
  68.         IAP_ADDRH=add/256;
  69.         IAP_ADDRL =add%256;
  70.         IAP_TRIG  =WD1;
  71.         IAP_TRIG  =WD2;
  72.         _nop_();_nop_();
  73.         IAP_Disable();
  74. }
  75. void IAP_Disable()
  76. {
  77.         IAP_CONTR =0;
  78.         IAP_CMD =0;
  79.         IAP_TRIG  =0;
  80.         IAP_ADDRH=0;
  81.         IAP_ADDRL =0;       
  82. }
  83. #endif
復制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

樓主
ID:521117 發表于 2019-12-30 20:53 | 只看該作者
學習,學習,感謝
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表