资讯详情

STC12C5A60S2 EEPROM 应用实例及数码管显示

#include"stc12c5a60s2.h"

#include"intrins.h" #define uchar unsigned char #define uint unsigned int #define A _POWER 0x80 #define ADC_FLAG 0x10 #define ADC_ ART 0x08 #define CMD_IDLE 0 //IAP等待 #define CMD_READ 1 //读flash #define CMD_PROGRAM 2 //写入 #define CMD_ERASE 3 //擦除 #define IAP_EN 0x83 #define iap_A ESS 0x0000 void key(); void SEG(); char code TAB[16]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92, 0x82,0xf8,0x80,0x98,0xa0, 0x83,0xc6,0xa1,0x86,0x8e}; #define disp P0 //smg的段控制口 sbit WE1=P2^0; // 的位控制口 sbit WE2=P2^1; sbit WE3=P2^2; sbit WE4=P2^3; sbit s1=P2^4; sbit s2=P2^5; sbit s3=P2^6; sbit s4=P2^7; bit bz=0; bit s11=0; char temp=5; char td[10]={0,1,2,3,4,5,6,7,8,9};//AD 8通道 uchar ch=0; led3=2,led2=0,led1=4,led0=5; //数码管将要显示的数字 void delay(int k) { int i,j; for(i=0;i<184;i++) for(j=0;j } void SEG() { WE1=WE2=WE3=WE4=1; disp=TAB[led3]; WE1=0;delay(1); WE1=1; disp=TAB[led2]; WE2=0;delay(1); WE2=1; disp=TAB[led1]; WE3=0;delay(1); WE3=1; disp=TAB[led0]; WE4=0;delay(1); WE4=1; } void iap_IDLE() { IAP_CO R=0; //禁止IAP读写擦除 IAP_CMD=0; //等待 IAP_ G=0; //命令未触发 IAP_ADDRH=0x80; //高位数据地址 IAP_ADDRL=0; //低位 } uchar iap_READ(uint addr) { uchar datas; IAP_C TR=IAP_EN; //控制允许位 IAP_CMD=CMD_READ; //写入读命令 IAP_ADDRL=addr; //自定义地址 IAP_ADDRH=addr>>8; IAP_TRIG=0x5a; //命令有效 IAP_TRIG=0xa5; _nop_(); datas=IAP_DATA; iap_IDLE(); return datas; //返回读出的数据 } void iap_PROGRAM(uint addr,uchar datas) { IAP_CONTR=IAP_EN; IAP_CMD=CMD_PROGRAM; IAP_ADDRL=addr; IAP_ADDRH=addr>>8; IAP_DATA=datas; IAP_TRIG=0x5a; IAP_TRIG=0xa5; _nop_(); iap_IDLE(); } void iap_ERASE(uint addr) { IAP_CONTR=IAP_EN; IAP_CMD=CMD_ERASE; IAP_ADDRL=addr; IAP_ADDRH=addr>>8; IAP_TRIG=0x5a; IAP_TRIG=0xa5; _nop_(); iap_IDLE(); } main() { while(1) { led0= temp; SEG(); key(); } } void key() { if(s1==0) { delay(1); if(s1==0) { if(bz==0) {bz=1;s11=!s11; if(s11==1) temp= iap_READ(iap_ADDRESS); else { iap_ERASE(iap_ADDRESS); iap_PROGRAM(iap_ADDRESS, temp); temp= iap_READ(iap_ADDRESS); } } } } else if(s2==0) { delay(1); if(s2==0) { if(bz==0) { bz=1; temp++; if(temp==10) temp=0; } } } else bz=0; } -电子元器件采购网(www.ruidan.com)是本土元器件目录分销商,采用“小批量、现货、样品”销售模式,致力于满足客户多型号、高质量、快速交付的采购需求。 自建高效智能仓储,拥有自营库存超过50,000种,提供一站式正品现货采购、个性化解决方案、选型替代等多元化服务。
锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台