|
while(1)
{
mode();
if(d==1)
{
CR=1;
if((key1==1)&&(key3==0)&&(key4==0))
{
count1++;
if(count1>8000)
{
count1=0;
if(num>0)
{
num=num-17;
if((key3==1)&&(key1==0))break;
CCAP3H=num;
delay(10);
}
}
}
if((key1==1)&&(key3==1))
{
count2++;
if(count2>8000)
{
count2=0;
if(num<0xFF)
{
num=num+17;
if((key3==1)&&(key1==0))break;
CCAP3H=num;
delay(10);
}
}
}
if((key4==1)&&(key1==1)&&(key3==0))
{
count3++;
if(count3>20000)
{
count3=0;
sum++;
if((key3==1)&&(key1==0))break;
if(sum==0x11)
{
sum=0x10;
}
}
}
if(key2==1)
{
count4++;
if(count4>20000)
{
count4=0;
sum--;
if((key3==1)&&(key1==0))break;
if(sum==0x00)
{
sum=0x01;
}
}
}
switch(sum)
{
//case 0x00:CCAP0H=0xFF;CCAP1H=0xFF;CCAP2H=0xFF;break;
case 0x01:PWM1();break;
case 0x02:PWM2();break;
case 0x03:PWM3();break;
case 0x04:PWM4();break;
case 0x05:PWM5();break;
case 0x06:PWM6();break;
case 0x07:PWM7();break;
case 0x08:PWM8();break;
case 0x09:PWM9();break;
case 0x0A:PWM10();break;
case 0x0B:PWM11();break;
case 0x0C:PWM12();break;
case 0x0D:PWM13();break;
case 0x0E:PWM14();break;
case 0x0F:PWM15();break;
case 0x10:PWM16();break;
default:break;
}
}
if(d==0)
{
temp=0xFF;
CCAP0H=temp;
CCAP1H=temp;
CCAP2H=temp;
CCAP3H=temp;
CR=0;
delay(100);
}
}
/*----------------------------
關(guān)閉IAP
----------------------------*/
void IapIdle()
{
ISP_CONTR = 0; //關(guān)閉IAP功能
ISP_CMD = 0; //清除命令寄存器
ISP_TRIG = 0; //清除觸發(fā)寄存器
ISP_ADDRH = 0x80; //將地址設(shè)置到非IAP區(qū)域
ISP_ADDRL = 0x00;
}
/*----------------------------
從ISP/IAP/EEPROM區(qū)域讀取一字節(jié)
----------------------------*/
uchar IapReadByte(uint addr)
{
uchar dat; //數(shù)據(jù)緩沖區(qū)
ISP_CONTR = ENABLE_ISP; //使能IAP
ISP_CMD = CMD_READ; //設(shè)置IAP命令
ISP_ADDRL = addr; //設(shè)置IAP低地址
ISP_ADDRH = addr >> 8; //設(shè)置IAP高地址
ISP_TRIG = 0x46; //寫觸發(fā)命令(0x5a)
ISP_TRIG = 0xB9; //寫觸發(fā)命令(0xa5)
_nop_(); //等待ISP/IAP/EEPROM操作完成
dat = ISP_DATA; //讀ISP/IAP/EEPROM數(shù)據(jù)
IapIdle(); //關(guān)閉IAP功能
return dat; //返回
}
/*----------------------------
寫一字節(jié)數(shù)據(jù)到ISP/IAP/EEPROM區(qū)域
----------------------------*/
void IapProgramByte(uint addr, uchar dat)
{
ISP_CONTR = ENABLE_ISP; //使能IAP
ISP_CMD = CMD_PROGRAM; //設(shè)置IAP命令
ISP_ADDRL = addr; //設(shè)置IAP低地址
ISP_ADDRH = addr >> 8; //設(shè)置IAP高地址
ISP_DATA = dat; //寫ISP/IAP/EEPROM數(shù)據(jù)
ISP_TRIG = 0x46; //寫觸發(fā)命令(0x5a)
ISP_TRIG = 0xB9; //寫觸發(fā)命令(0xa5)
_nop_(); //等待ISP/IAP/EEPROM操作完成
IapIdle();
}
/*----------------------------
扇區(qū)擦除
----------------------------*/
void IapEraseSector(uint addr)
{
ISP_CONTR = ENABLE_ISP; //使能IAP
ISP_CMD = CMD_ERASE; //設(shè)置IAP命令
ISP_ADDRL = addr; //設(shè)置IAP低地址
ISP_ADDRH = addr >> 8; //設(shè)置IAP高地址
ISP_TRIG = 0x46; //寫觸發(fā)命令(0x5a)
ISP_TRIG = 0xB9; //寫觸發(fā)命令(0xa5)
_nop_(); //等待ISP/IAP/EEPROM操作完成
IapIdle();
}
要求同時(shí)保存參數(shù)d,num,sum三個(gè)參數(shù),我現(xiàn)在只能按照例子保存一個(gè)參數(shù),在上電讀出,請(qǐng)教各位高手
|
|