- 12
- 0
- 约1.93千字
- 约 5页
- 2019-07-05 发布于浙江
- 举报
ORG 0000H//伪指令起始地址
LJMP MAIN//跳到主函数里
ORG 0100H//重新开始设置起始地址,因为在0000H~0023H为中断子函数的入口,等于说这几个入口地址把这段内存给分割了,为了保证程序的连续性要跳过这段内存。当然也可以从0030H开始。
MAIN:MOV A,#0FEH//点亮第一个灯。1111 1110。因为所有的LED是共阳极的所以当给低电平的时候导通
MOV R0,#08H//这个是用来确定循环次数的,意思就是说我有八个灯,所有我循环八次
A1: MOV P1,A//点亮第一个灯
LCALL DELAY//调用延时子函数
RL A//左移一位,注意这条语句。是左移一位后的数据重新给累加器A。也就是说原来是1111 1110.现在是1111 1101。
DJNZ R0,A1//DJNZ。Decrease jump not zero.我直白的理解减1不是0就跳,谁减呢R0减,跳哪呢?跳到A1处。然后此时由于累加器A此时存的是1111 1101.所以大家应该要明白,当我跳回到A1的时候给P1口赋值时。点亮的是第二个灯,第一个灯灭。然后八次循环。依次点亮。
MOV A,#7FH//对累加器A重装初值
MOV R0,#08H//还是八次循环。A2的目的是从左往右依次
原创力文档

文档评论(0)