//了一个整形变量,例如:uint i=0x1388
MOV R6,#0x13
TAG1://什么软件的反汇编,居然能编译出TAG来,
/*这两句是将R7,和R6的值暂时存起来*/
MOV A,R7
MOV R4,0x06//以为51单片机中没有MOV R4,R6这条指令,所以用这条代替
//典型的双字节变量减1程序
DEC R7 //低八位先减1
JNZ TAG2//减1之前,如果不是0则跳到TAG2,是0则继续执行
DEC R6//高八位再减1
TAG2:
ORL A,R4//减一之前的高八位和低八位进行或运算
JNZ TAG1//如果是0则结束,如果不是0,则返回TAG1继续
//这在C里就是 while(i--)
ORG 0000HLJMP MAIN 主程序开始
ORG 000BH
AJMP PIT0 t0中断入口
ORG 001BH
AJMP PIT1 t1中断入口
MAIN: MOV SP, #60H 设置堆栈
MOV TMOD, #03H定时器方式 T0T1都是方式1
MOV TL0, #9CH T0初始值
MOV TH0, #38H
MOV TCOM, #50H TR0=1 TR1=1 启动定时器
MOV IE, #8AH 开启定时器中断
HERE: AJMP HERE
PIT0: MOV TL0, #9CH T0 时间到 重新送初值
CPL P1.0 取反P1.0 生成方波
RETI
PIT1: MOV TH0, #38H T1时间到 重新送初值
CPL P1.1 取反p1.1 生成方波
RETI
END
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)