#循环loop

range()函数
python range() 函数可创建一个整数列表,一般用在 for 循环中。
函数语法

range(start, stop[, step])
  • start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
  • stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
  • step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
>>>range(10)        # 从 0 开始到 10
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(1, 11)     # 从 1 开始到 11
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> range(0, 30, 5)  # 步长为 5
[0, 5, 10, 15, 20, 25]
>>> range(0, 10, 3)  # 步长为 3
[0, 3, 6, 9]
>>> range(0, -10, -1) # 负数
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
>>> range(0)
[]
>>> range(1, 0)
[]

range在for循环中的使用

>>>x = 'runoob'
>>> for i in range(len(x)) :
...     print(x[i])
... 
r
u
n
o
o
b
>>>

TIP:
程序卡机时,CRTL+C退出program

你的程序已经很好地实现了LED从全亮到逐个熄灭的效果,并最终回到主循环重新开始。如果你想让LED在全灭后保留一段时间再重新进入循环,可以在判断 `A == #0FFH` 后加入一段延时。 以下是修改后的代码: ```assembly ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV P1, #00H ; 初始全亮 ACALL DELAY MOV A, #01H ; 初始熄灭模式:00000001 LOOP: MOV P1, A ; 输出当前状态 ACALL DELAY CLR C ; 清空进位位 RLC A ; 带进位左移 ORL A, #01H ; 保持最低位为1 CJNE A, #0FFH, LOOP ; 判断是否全灭 ; 全灭后再延迟一段时间 ACALL FULL_OFF_DELAY SJMP MAIN ; 重新开始循环 DELAY: ; 短延时子程序(约0.5秒) MOV R7, #20 LOOP1: MOV R6, #200 LOOP2: MOV R5, #250 LOOP3: DJNZ R5, LOOP3 DJNZ R6, LOOP2 DJNZ R7, LOOP1 RET FULL_OFF_DELAY: ; LED全灭延时子程序 (更长的时间) MOV R7, #50 ; 调整此值可以改变延长时间 OFF_LOOP1: MOV R6, #200 OFF_LOOP2: MOV R5, #250 OFF_LOOP3: DJNZ R5, OFF_LOOP3 DJNZ R6, OFF_LOOP2 DJNZ R7, OFF_LOOP1 RET END ``` ### 修改点说明: 1. **新增了`FULL_OFF_DELAY`** 子程序用于延长LED全灭的状态时间。 - 这段延时比普通的`DELAY`更大一些,你可以通过调整外层循环变量`R7`的初始值来自由设定延时长度。 2. 当检测到所有LED都已熄灭 (`CJNE A, #0FFH`) ,会跳转至新添加的`ACALL FULL_OFF_DELAY`指令执行较长延时。 现在运行这个改进版本之后,在所有的LED完全关闭以后会有一定的停留时间然后才再次返回到起始位置并重新点亮序列。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值