- 打卡等级:初来乍到
- 打卡总天数:2
- 最近打卡:2025-04-17 16:11:00
中级会员
- 积分
- 261
|
发表于 2024-8-29 15:23:28
|
显示全部楼层
#include "pbdata.h"
void UART1_Initalize(void);
void TIM0_Initalize(void);
void INIT1_Initalize(void);
void Delay100ms(void);
void IapIdle()
{
IAP_CONTR = 0; //??IAP??
IAP_CMD = 0; //???????
IAP_TRIG = 0; //???????
IAP_ADDRH = 0x80; //???????IAP??
IAP_ADDRL = 0;
}
char IapRead(int addr)
{
char dat;
IAP_CONTR = 0x80; //??IAP
IAP_TPS = 22; //??????12MHz
IAP_CMD = 1; //??IAP???
IAP_ADDRL = addr; //??IAP???
IAP_ADDRH = addr >> 8; //??IAP???
IAP_TRIG = 0x5a; //?????(0x5a)
IAP_TRIG = 0xa5; //?????(0xa5)
_nop_();
dat = IAP_DATA; //?IAP??
IapIdle(); //??IAP??
return dat;
}
void IapProgram(int addr, char dat)
{
IAP_CONTR = 0x80; //??IAP
IAP_TPS = 22; //??????12MHz
IAP_CMD = 2; //??IAP???
IAP_ADDRL = addr; //??IAP???
IAP_ADDRH = addr >> 8; //??IAP???
IAP_DATA = dat; //?IAP??
IAP_TRIG = 0x5a; //?????(0x5a)
IAP_TRIG = 0xa5; //?????(0xa5)
_nop_();
IapIdle(); //??IAP??
}
void IapErase(int addr)
{
IAP_CONTR = 0x80; //??IAP
IAP_TPS = 22; //??????12MHz
IAP_CMD = 3; //??IAP????
IAP_ADDRL = addr; //??IAP???
IAP_ADDRH = addr >> 8; //??IAP???
IAP_TRIG = 0x5a; //?????(0x5a)
IAP_TRIG = 0xa5; //?????(0xa5)
_nop_(); //
IapIdle(); //??IAP??
}
u8 table;
void main(void)
{
P1M1=0x00; P1M0=0x00;
P3M1=0x00; P3M0=0x00;
P5M1=0x00; P5M0=0x00;
Delay100ms();
Delay100ms();
Delay100ms();
Delay100ms();
UART1_Initalize();
ADC_Initalize();
TIM0_Initalize();
PWM_Initalize();
INIT1_Initalize();
IapErase(0x0000);
IapProgram(0x0000, 200);
table = IapRead(0x0000); //P1
ADC_Process();
while(1)
{
Delay100ms();
Delay100ms();
printf("EEPROMÖµ%bd\n",table );
Delay100ms();
Delay100ms();
}
}
/************´®¿Ú1´òÓ¡º¯Êý************/
void UART1_Initalize(void) //115200bps@22.1184MHz
{
SCON = 0x50; //8λÊý¾Ý£¬¿É±ä²¨ÌØÂÊ
AUXR |= 0x40; //¶¨Ê±Æ÷1ʱÖÓ1Tģʽ
AUXR &= 0xFE; //Ñ¡Ôñ¶¨Ê±Æ÷1Ϊ²¨ÌØÂÊ·¢ÉúÆ÷
TMOD &= 0x0F; //ÉèÖö¨Ê±Æ÷ģʽ
TL1 = 0xD0;
TH1 = 0xFF;
ET1 = 0; //¹Ø±Õ¶¨Ê±Æ÷1ÖжÏ
TR1 = 1; //¿ªÆô¶¨Ê±Æ÷
}
/**********ÖØÐ¶¨Òå***************/
void UART1_SendChar(u8 udata)
{
SBUF=udata;
while(!TI);
TI=0;
}
char putchar(char c)
{
UART1_SendChar(c);
return c;
}
/****************************¶¨Ê±Æ÷0Òç³öÂÊ*************************/
void TIM0_Initalize(void) //3΢ÃëÒç³öÂÊ×÷ΪPWMʱÖÓÔ´
{
AUXR |= 0x80; //?????1T??
TMOD &= 0xF0; //???????
TL0 = 0xea; //???????
TH0 = 0xff; //???????
TF0 = 0; //??TF0??
TR0 = 1; //???0????
}
/************************ÍⲿÖжÏ1³õʼ»¯****************************/
void INIT1_Initalize(void)
{
IT1 = 1; //ϽµÑØ´¥·¢
EX1 = 1;
EA = 1;
}
/******************************ÑÓʱº¯Êý****************************/
void Delay100ms(void) //@22.1184MHz
{
unsigned char data i, j, k;
i = 12;
j = 57;
k = 122;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
/***************±£»¤ÍⲿÖжÏ1***********************/
void INT1_IRQ_Handler(void) interrupt 2
{
CCAP0L=0; CCAP0H=0; //Õ¼¿Õ±È¿ØÖÆÎ»,¹Ø±ÕPWM
Level_20=1; Level_40=1; Level_60=1; Level_80=1; Level_100=1; //ËùÓÐָʾµÆ¶¼¹Ø±Õ
}
|
|