void delay(int a)
{
int i
while(a--)for(i=0i<120i++)
}
main()
{
int i
P0=0xff
P1=0xff
P2=0xff
P3=0xff
for(i=0i<8i++){P0=P0<<1delay(100)}
for(i=0i<8i++){P1=P1<<1delay(100)}
for(i=0i<8i++){P2=P2<<1delay(100)}
for(i=0i<8i++){P3=P3<<1delay(100)}
while(1)
}
MOV R5,#16MOV R6,#40H
LONG:
MOV R4,#1516个数比较15次
MOV A,30H将30H里面的内容复给A
MOV R0,#31H让其从31H开始自加到3FH
L:
SUBB A,@R031H里面的内容和30H里面的内容进行相减比较求C
JC XU如果C=0则表示A里面的内容大于@R0里面的内容否则小于跳转XU
INC R0R0加1到下一单元地址
DJNZ R4,L15次比较没有结束跳转到L继续执行
AJMP LL如果15次循环完毕则求出最大值,然后再循环求出次大值
XU:
MOV A,R0放比较数的地址送A,以清零方便为第二次比较
MOV R1,A方便清零
MOV A,@R0最大值送A
INC R0
AJMP LL
LL:
MOV @R1,#00H最大值地址清零,然后再比较15次求次大值
MOV R6,A最大值送40H
INC R6
DJNZ R5,LONG判断是否全部从大到小排完
AJMP TT
TT:
END
这个问题比较复杂!就正常而言,是在执行LJMPMAIN
跳转到MAIN主程序上。如果没有发生跳转命令就会顺序执行
LJMP
INT0、LJMP
INT1。程序执行过程中先要跳转到MAIN程序中,如果MAIN程序中有根据条件来跳过程序或是终止程序是就不会执行下面的程序。如果没有发生上面情况,程序回顺序执行MAIN、INT0、INT1.......你的程序正常情况是跳转执行MAIN程序,然后跳到ORG003H
INT0,执行INT0程序,接下来就是执行ORG013H
INT1,并跳转到INT1
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)