📄 lpcdos.c
字号:
#define DOS
#define Inportb inportb
#define Outportb outportb
#include "lpc.c"
void Puts(char *Str)
{ puts(Str);
}
void SetProgress(int steps)
{ if (!steps)
{ printf("\n");
return;
}
for(steps+=10;steps;steps--)
printf("\xb0");
printf("\rProgress: ");
}
void StepProgress(void)
{ if (kbhit() && (getch()==27))
{ AbortLPC=1;
printf("\nOperation Aborted\n");
}
else
printf("\xba");
}
void Debug(void)
{ char Buffer[255];
Ubyte flag, flag2, i, j, k, R2;
flag=1;
if (Rev2_Detect())
{ printf("Good news - software can read/write LAD[3:0] on this PC.\n");
R2=1;
}
else
{
R2=0;
}
SetDriver(Rev2_Detect());
while(flag)
{
printf("(T=Test,Q=Quit) Diag Command > ");
gets(Buffer);
switch (toupper(Buffer[0]))
{ case 'T':
printf("1. Disconnect LPC Flash\n");
printf("2. Connect 3 LED,each with a 470 ohms resistor between Lclk,Lframe,Lrst to gnd\n");
printf("3. Short LAD[3:0] signals one at a time to ground\n");
printf("4. Press ESC key to quit test when done\n\n");
printf(" L L L\n");
printf(" c f r\n");
printf(" l r s\n");
printf(" k m t\n");
printf("\n");
i=0;
j=0;
flag2=1;
Ldout(0x0f);
do
{ printf("\rLAD[3:0]=0x%02x ",Ldin());
if (!i)
{ i=500;
Lpt_Data = (Lpt_Data & ~CTRLMASK) | (0x01 <<j);
Outportb(DATA,Lpt_Data);
for(k=0;k<3;k++)
printf((k==j)?" *":" ");
if (j==2)
j=0;
else
j++;
}
else
i--;
if (kbhit())
flag2=(getch()!=27);
} while (flag2);
printf("\n\n");
break;
case 'Q':
flag=0;
break;
}
}
}
void Diag(void)
{ char Buffer[255];
Uword Addr, data;
Ubyte flag;
flag=1;
while(flag)
{
printf("(D=Set Delay,R=Read I/O,W=Write I/O,C=Check Cable,Q=Quit) Diag Command > ");
gets(Buffer);
switch (toupper(Buffer[0]))
{ case 'R':
printf("I/O address (hex) ? ");
gets(Buffer);
sscanf(Buffer,"%x",&Addr);
printf("I/O(%x) = %02x\n",Addr,(Uword)Inportb(Addr));
break;
case 'W':
printf("I/O address (hex) ? ");
gets(Buffer);
sscanf(Buffer,"%x",&Addr);
printf("Before:I/O(%x) = %02x ",Addr,(Uword)Inportb(Addr));
printf(" Overwritten with (hex) ? ");
gets(Buffer);
sscanf(Buffer,"%x",&data);
Outportb(Addr,data);
printf("After: I/O(%x) = %02x \n",Addr,(Uword)Inportb(Addr));
break;
case 'D':
printf("Delay Constant ? (0=No delay) ");
gets(Buffer);
sscanf(Buffer,"%d",&LPC_Delay);
printf("Delay constant set to %d\n",LPC_Delay);
break;
case 'C':
Debug();
break;
case 'Q':
flag=0;
break;
}
}
}
void main()
{ Ubyte flag;
char Buffer[255];
puts(VERSION);
SetDriver(Rev2_Detect());
InitFlash();
flag=1;
while(flag)
{
printf("(R=Read,W=Write,V=Verify,E=Erase,B=Blank Check,I=ID,D=Diag,Q=Quit) Command >");
gets(Buffer);
FlashReset();
AbortLPC=0;
switch (toupper(Buffer[0]))
{ case 'R':
printf("Output file name ? ");
gets(Buffer);
ReadChip(Buffer);
break;
case 'W':
printf("Input file name ? ");
gets(Buffer);
WriteChip(Buffer,1);
break;
case 'V':
printf("Input file name ? ");
gets(Buffer);
VerifyChip(Buffer,1);
break;
case 'E':
FlashErase();
printf("Erase done. ");
case 'B':
printf("Performing Blank check.\n");
BlankCheck();
break;
case 'I':
ReadFlashID();
break;
case 'D':
Diag();
break;
case 'Q':
flag=0;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -