| 回87楼老兄: 
 哈哈~~~看到INT 13就知道此人会干"坏事"~~~
 
 我那时做了很多宏,我自称之为"宏C".不过存在软盘搬家认为没用都丢了...
 
 不过我玩PIC单片机做菜鸟时,没上过网,C语言很难搞到手(因为村里贫穷).
 
 所以我就把PC上的"宏C"移植到了,自己"臭美"地称之为"HPL语言"~~~
 
 不过在一个军工用后,给他们看源码,编程高手都问这是什么语言编写的~~~
 
 不说了~~~再说就...
 
 以下是HPL与C的对照~~~(都是无限嵌套)
 
 一直没发表~~~虽然它不会"祸乱人间"~~~
 
 ;-------------------------------------------------------------------;
 ;HPL Version 1.0 演示程序           ;
 ;HotPower 2003.5.25       ;
 ;-------------------------------------------------------------------;
 #include <p16f877.inc>
 #include <HotPower.inc>HPL语言函数库文件
 #include <HPLMath.inc>HPL语言数学函数库文件
 #include <HPL16877.inc>P16F877函数库文件
 ;C++ main(){
 Main(Void);主程序开始
 nop;debug
 ;C++ unsigned char i,j,k,m,n,h,l,x,y,z;
 nop;debug
 TDByteVar(p,0x60,0x64);声明1个地址不连续字型变量i,地址定位在0x60和0x64处
 nop;debug
 VarVal(p,0x1234);
 nop;debug
 ; Var(t,0x66,TDByte);声明1个字节型变量i,地址定位在0x20处
 ;产生告警信息:
 ;请用TDByteVal()定义变量[t],地址为[0x66]
 Var(i,0x20,TByte);声明1个字节型变量i,地址定位在0x20处
 nop;debug
 VarVal(i,0x20);i变量使用正确
 nop;debug
 ByteVal(i,0x88);i变量使用正确
 nop;debug
 WordVal(i,0x1234);i变量使用错误,地址0x21被改写为0x12
 ; TypeVar(i,0x20,TWord);改写1个字型变量i,地址定位在0x20:0x21处
 ;产生告警信息:
 ;第1个变量类型被重新定义为[TWord]类型,变量地址为[0x20]
 WordVal(i,0x1234);i变量使用正确
 ByteVal(i,0x88);i变量使用正确
 Var(j,0x21,TByte);声明1个字节型变量j,地址定位在0x21处
 ;Var(j,0x60,TByte);声明1个字节型变量j,地址定位在0x21处
 ;产生错误信息(115)
 ;Duplicate label ("j" or redefining symbol that cannot be redefined
 Var(k,0x22,TByte);声明1个字节型变量k,地址定位在0x22处
 ;Var(k,0x22,TByte);声明1个字节型变量k,地址定位在0x22处
 ;产生错误信息:
 ;第3个变量[k]被重复定义,变量地址为[0x22]
 Var(m,0x23,TByte);声明1个字节型变量m,地址定位在0x23处
 Var(n,0x24,TByte);声明1个字节型变量n,地址定位在0x24处
 Var(h,0x25,TByte);声明1个字节型变量h,地址定位在0x25处
 Var(l,0x26,TByte);声明1个字节型变量l,地址定位在0x26处
 Var(x,0x27,TByte);声明1个字节型变量x,地址定位在0x27处
 Var(y,0x28,TByte);声明1个字节型变量y,地址定位在0x28处
 Var(z,0x29,TByte);声明1个字节型变量z,地址定位在0x29处
 ;TypeVar(z,0x29,TWord);将变量z改写为字型,地址定位在0x29:0x2a处
 ;产生告警信息:
 ;第10个变量[z]类型被重新定义为[TWord]类型,变量地址为[0x29]
 ;C++ unsigned int ii,jj,kk,mm,nn,hh,ll,xx,yy,zz;
 Var(ii,0x30,TWord);声明1个字型变量ii,地址定位在0x30:0x31处
 Var(jj,0x32,TWord);声明1个字型变量jj,地址定位在0x32:0x33处
 Var(kk,0x34,TWord);声明1个字型变量kk,地址定位在0x34:0x34处
 Var(mm,0x36,TWord);声明1个字型变量mm,地址定位在0x36:0x37处
 Var(nn,0x38,TWord);声明1个字型变量nn,地址定位在0x38:0x39处
 Var(hh,0x3a,TWord);声明1个字型变量hh,地址定位在0x3a:0x3b处
 Var(ll,0x3c,TWord);声明1个字型变量ll,地址定位在0x3c:0x3d处
 Var(xx,0x3e,TWord);声明1个字型变量xx,地址定位在0x3e:0x3f处
 Var(yy,0x40,TWord);声明1个字型变量yy,地址定位在0x40:0x41处
 Var(zz,0x42,TWord);声明1个字型变量zz,地址定位在0x42:0x43处
 ;Var(zz,0x42,TByte);将变量zz改写为字节型,地址定位在0x42:0x43处
 ;产生告警信息:
 ;第20个变量[zz]有多类型定义,变量地址为[0x42]
 ; org 0x8fd
 nop;debug
 IFET_Bit(STATUS,Z);
 ByteVal(i,0);
 nop;debug
 ELSEIFET_Bit;
 ByteVal(i,1);
 nop;debug
 ENDIFET_Bit;
 nop;debug
 IFNT_Bit(STATUS,Z);
 ByteVal(i,0);
 nop;debug
 ELSEIFNT_Bit;
 ByteVal(i,1);
 nop;debug
 ENDIFNT_Bit;
 ;C++    i=100;
 ByteVal(i,10);
 nop;debug
 ;C++    j=123
 ByteVal(j,123);
 nop;debug
 ;C++    ii=(unsigned int)i*j;
 ; MulByteVar(i,j,ii);
 ;C++ ii=0x1234;
 WordVal(ii,0x1234);
 nop;
 ;C++    kk=ii/jj;
 DivWordVar(ii,jj,xx,yy);
 nop;debug
 ;C++    jj=ii;
 WordVar(jj,ii);
 nop;debug
 ;C++ i=88;
 ByteVal(i,80);
 nop;debug
 ;C++ if(i==88){
 IFNE_ByteVal(i,88);
 ;C++ j=99;
 ByteVal(j,99);
 nop;debug
 ;C++ ??????????????
 IFET_TestByte(zz);
 ;C++ j=1;
 ByteVal(j,1);
 nop;debug
 ;     ESLEIFET_TestByte
 ;C++ j=0;
 ByteVal(j,0);
 nop;debug
 ENDIFET_TestByte;
 ;C++ if(x & 1){
 IFET_AndByteVal(x,1)
 ;C++ j=1;
 ByteVal(j,1);
 nop;debug
 ELSEIFET_AndByteVal
 ByteVal(j,0);
 nop;debug
 ENDIFET_AndByteVal
 ;C++ }
 
 ;C++ if(x | 1){
 IFET_OrByteVal(x,1)
 ;C++ j=1;
 ByteVal(j,1);
 nop;debug
 ELSEIFET_OrByteVal
 ByteVal(j,0);
 nop;debug
 ENDIFET_OrByteVal
 ;C++ }
 
 ;C++ if(x ^ 1){
 IFET_XorByteVal(x,1)
 ;C++ j=1;
 ByteVal(j,1);
 nop;debug
 ELSEIFET_XorByteVal
 ByteVal(j,0);
 nop;debug
 ENDIFET_XorByteVal
 ;C++ }
 
 ;C++ if(i>=33){
 IFGE_ByteVal(i,33);
 ;C++ k=i;
 ByteVar(k,i);
 nop;debug
 ;C++ }
 ENDIFGE_ByteVal;
 ;C++ if(j==99){
 IFEQ_ByteVal(j,88);
 ;C++ k=88;
 ByteVal(k,88);
 nop;debug
 ;C++ }
 ;C++ else{
 ELSEIFEQ_ByteVal;
 ;C++ m=9;
 ByteVal(m,9);
 nop;debug
 ;C++ }
 ENDIFEQ_ByteVal
 ;C++ h=9;
 ByteVal(h,9);
 nop;debug
 ;C++ }
 ;C++ else{
 ELSEIFNE_ByteVal;
 ;C++ n=9;
 ByteVal(n,9);
 nop;debug
 ;C++ if(n<8){;
 IFLE_ByteVal(n,8);
 ;C++ l=12;
 ByteVal(l,12);l=12;
 nop;debug
 ;C++ }
 ;C++ else{
 ELSEIFLE_ByteVal;
 ;C++ z=0xaf;
 ByteVal(z,0xaf);
 nop;debug
 ;C++ }
 ENDIFLE_ByteVal;
 nop;debug
 ;C++ }
 ENDIFNE_ByteVal;
 ;C++ x=123;
 ByteVal(x,123);
 nop;debug
 ;C++ y=25;
 ByteVal(y,25);
 nop;debug
 ;C++ y++;
 IncByte(y);
 nop;debug
 ;C++ if(x>5){
 IFGT_ByteVal(x,5);
 ;C++ x=y;
 ByteVar(x,y);
 nop;debug
 ENDIFGT_ByteVal;
 nop;debug
 org 0x10fd
 nop;debug
 IFET_Bit(STATUS,Z);
 ByteVal(i,0);
 nop;debug
 ELSEIFET_Bit;
 ByteVal(i,1);
 nop;debug
 ENDIFET_Bit;
 nop;debug
 ByteVal(i,2);
 nop
 DoCase(i);
 Case 1;
 nop
 AndByteVal(j,0xfe);
 nop
 Case 2;
 AndByteVal(j,0x7f);
 nop
 EndCase;
 nop
 ;C++ }
 ;C++ }
 MainEnd;主程序结束
 
 
 
 
 ;-------------------------------------------------------------------;DOCASE(switch) 演示程序           ;
 ;HotPower 2003.6.8        ;
 ;-------------------------------------------------------------------;
 #include <p16f877.inc>
 #include <HotPower.inc>HPL语言函数库文件
 #include <HPLMath.inc>HPL语言数学函数库文件
 #include <HPL16877.inc>P16F877函数库文件
 Main(Void); main(){//主程序开始
 Var(i,0x20,TByte); unsigned char i;
 Var(j,0x30,TByte); unsigned char j;
 Var(k,0x40,TByte); unsigned char k;
 Var(m,0x50,TByte); unsigned char m;
 Var(n,0x60,TByte); unsigned char n;
 ByteVal(i,2); i = 2;
 ByteVal(j,3); j = 3;
 ByteVal(k,0); k = 0;
 DoCase(k); switch(k){
 nop;
 Case 10; case 10:
 nop; //HPL语言同Delphi等语言一样,不需要加break语句
 Case 8; case 8:
 nop
 ExecCase;//该语句为HPL语言特有的,其他语言中没有
 ;-----ExecCase执行CASE比较成立的语句--------------------
 nop
 ELSECase; default:
 ;-----ElseCase执行CASE比较不成立的语句------------------
 nop;
 IncByte(k); k++;
 nop
 IFEQ_ByteVal(k,6); if(k == 6){
 nop
 ExitCase; break;
 nop
 ENDIFEQ_ByteVal; }
 nop;
 LoopCase; continue;
 nop
 ENDCase; }
 nop
 DoCase(i); switch(i){
 Case 1; case 1:
 nop
 ExitCase; break;
 Case 2; case 2:
 nop
 DoCase(j); switch(j){
 Case 1; case 1:
 nop;
 Case 2; case 2:
 nop;
 Case 3; case 3:
 ByteVal(k,88); k = 88;
 nop
 IFEQ_ByteVal(k,88); if(k == 88){
 ByteVal(m,3); m = 3;
 nop
 DoCase(m); switch(m){
 Case 1; case 1:
 nop
 Case 2; case 2:
 nop
 Case 3; case 3:
 ByteVal(n,0x99); n = 99;
 nop;
 IFEQ_ByteVal(n,88); if(n == 88){
 nop
 ELSEIFEQ_ByteVal; }else{
 ByteVal(i,2); i = 2;
 nop;
 DoCase(i); switch(i){
 Case 1; case 1:
 nop
 Case 2; case 2:
 ByteVal(j,8); j = 8;
 nop
 IFLE_ByteVal(j,88); if(j <= 88){
 nop
 ELSEIFLE_ByteVal; }else{
 ByteVal(j,3); j = 3;
 nop
 DoCase(j); switch(j){
 Case 1; case 1:
 nop;
 Case 2; case 2:
 nop
 ELSECase; default:
 nop;
 ENDCase; }
 nop
 ByteVal(k,3); k = 3;
 nop
 DoCase(k); switch(k){
 Case 1; case 1:
 nop;
 Case 2; case 2:
 nop
 ELSECase; default:
 nop;
 ENDCase; }
 nop
 ENDIFLE_ByteVal; }
 nop
 ELSECase; default:
 nop
 ENDCase; }
 nop
 ENDIFEQ_ByteVal; }
 nop;
 ELSECase; default:
 nop;
 ENDCase; }
 nop
 ELSEIFEQ_ByteVal; }else{
 nop
 ENDIFEQ_ByteVal; }
 nop
 ELSECase; }
 nop
 ENDCase; }
 nop
 Case 3; case 3:
 nop
 Case 4; case 4:
 ByteVal(j,8); j = 8;
 nop
 DoCase(j); switch(j){
 Case 1; case 1:
 nop;
 Case 2; case 2:
 nop
 ELSECase; default:
 nop;
 ENDCase; }
 nop;
 nop
 Case 5; case 5:
 nop
 ELSECase; default:
 ByteVal(j,1); j = 1;
 nop
 DoCase(j); switch(j){
 Case 1; case 1:
 nop;
 Case 2; case 2:
 nop
 ELSECase; default:
 nop;
 ENDCase; }
 nop;
 ENDCase; }
 nop
 MainEnd;}//主程序结束
 
 ;-------------------------------------------------------------------;while演示程         ;
 ;HotPower 2003.6.8        ;
 ;------------------------------------------------------------------- #include <p16f877.inc>
 #include <HotPower.inc>HPL语言函数库文件
 #include <HPLMath.inc>HPL语言数学函数库文件
 #include <HPL16877.inc>P16F877函数库文件
 Main(Void); main(void){//主程序开始
 Var(i,0x20,TByte); unsigned char i;
 Var(j,0x30,TByte); unsigned char j;
 Var(k,0x40,TByte); unsigned char k;
 Var(m,0x50,TByte); unsigned char m;
 Var(n,0x60,TByte); unsigned char n;
 ByteVal(i,10); i = 10;
 ByteVal(j,3); j = 3;
 ByteVal(k,8); k = 8;
 nop
 WhileET_Bit(PORTB,BIT7);
 nop
 EndWhileET_Bit;
 nop
 DnWhileET_Bit;
 nop
 ;      ExitDnWhileET_Bit;
 nop
 EndDnWhileET_Bit(PORTB,BIT7);
 nop
 DnWhileNT_Bit;
 nop
 ExitDnWhileNT_Bit;
 nop
 EndDnWhileNT_Bit(PORTB,BIT7);
 nop
 WhileEQ_ByteVal(i,10); while(i == 10){
 nop
 ByteVal(m,1); m = 1;
 nop;
 WhileNE_ByteVal(m,10); while(m != 10){
 nop;
 IncByte(m); m++;
 nop;
 ENDWhileNE_ByteVal; }
 nop;
 ByteVal(m,1); m = 1;
 nop;
 WhileLT_ByteVal(m,10); while(m < 10){
 nop;
 ExitWhileLT_ByteVal; break;
 nop
 IncByte(m); m++;
 nop;
 ENDWhileLT_ByteVal; }
 nop;
 ByteVal(m,18); m = 18;
 nop;
 WhileGT_ByteVal(m,10); while(m > 10){
 nop;
 IncByte(m); m++;
 nop
 LoopWhileGT_ByteVal; continue;
 nop;
 ENDWhileGT_ByteVal; }
 nop;
 ByteVal(m,1); m = 1;
 nop;
 WhileLE_ByteVal(m,10); while(m <= 10){
 nop;
 IncByte(m); m++;
 nop;
 ENDWhileLE_ByteVal; }
 nop;
 ByteVal(m,18); m = 18;
 nop;
 WhileGE_ByteVal(m,10); while(m >= 10){
 nop;
 IncByte(m); m++;
 nop;
 ENDWhileGE_ByteVal; }
 nop;
 ENDWhileEQ_ByteVal; }
 nop
 MainEnd; }//主程序结束
 
 ;-------------------------------------------------------------------;
 ;For演示程序           ;
 ;HotPower 2003.6.8        ;
 ;-------------------------------------------------------------------;
 #include <p16f877.inc>
 #include <HotPower.inc>HPL语言函数库文件
 #include <HPLMath.inc>HPL语言数学函数库文件
 #include <HPL16877.inc>P16F877函数库文件
 Main(Void); main(void){//主程序开始
 Var(i,0x20,TByte); unsigned char i;
 Var(j,0x30,TByte); unsigned char j;
 Var(k,0x40,TWord); unsigned int k;
 Var(t,0x48,TWord); unsigned int t;
 Var(m,0x50,TByte); unsigned char m;
 Var(n,0x60,TByte); unsigned char n;
 WordVal(t,0); t = 0;
 ByteVal(m,0); m = 0;
 ByteVal(n,0); n = 0;
 nop
 For_ByteVal(i,1,10); for(i = 1; i <= 10; i++){
 nop
 IncByte(m); m++;
 nop
 For_ByteVal(j,10,1); for(j = 10; j >= 1; j--){
 nop
 IFGT_ByteVal(n,0); if(n > 0){
 nop
 LoopFor_ByteVal; continue;
 nop
 ENDIFGT_ByteVal; }
 nop
 IncByte(n); n++;
 nop
 ENDFor_ByteVal; }
 nop
 For_WordVal(k,1,10000); for(k = 1; k <= 10000; k++){
 nop
 IncByte(n); n++;
 IFEQ_ByteVal(n,128); if(n == 128){
 nop
 ExitFor_WordVal; break;
 nop
 ENDIFEQ_ByteVal; }
 nop
 ENDFor_WordVal; }
 nop
 AddWordByte(t,m); t += m;
 nop
 AddWordByte(t,n); t += n;
 nop
 ENDFor_ByteVal; }
 nop
 MainEnd; }//主程序结束
 
 
 
 
 
 |