1 Star 0 Fork 0

DFRobot/pxt-Math-Automatic

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
sendBuffer.asm 1.57 KB
一键复制 编辑 原始数据 按行查看 历史
知音少断弦有谁听t 提交于 2019-08-08 15:36 +08:00 . 1
sendBufferAsm:
push {r4,r5,r6,r7,lr}
mov r4, r0 ; save buff
mov r6, r1 ; save pin
mov r0, r4
bl BufferMethods::length
mov r5, r0
mov r0, r4
bl BufferMethods::getBytes
mov r4, r0
; setup pin as digital
mov r0, r6
movs r1, #0
bl pins::digitalWritePin
; load pin address
mov r0, r6
bl pins::getPinAddress
ldr r0, [r0, #8] ; get mbed DigitalOut from MicroBitPin
ldr r1, [r0, #4] ; r1-mask for this pin
ldr r2, [r0, #16] ; r2-clraddr
ldr r3, [r0, #12] ; r3-setaddr
cpsid i ; disable irq
b .start
.nextbit: ; C0
str r1, [r3, #0] ; pin := hi C2
tst r6, r0 ; C3
bne .islate ; C4
str r1, [r2, #0] ; pin := lo C6
.islate:
lsrs r6, r6, #1 ; r6 >>= 1 C7
bne .justbit ; C8
; not just a bit - need new byte
adds r4, #1 ; r4++ C9
subs r5, #1 ; r5-- C10
bcc .stop ; if (r5<0) goto .stop C11
.start:
movs r6, #0x80 ; reset mask C12
nop ; C13
.common: ; C13
str r1, [r2, #0] ; pin := lo C15
; always re-load byte - it just fits with the cycles better this way
ldrb r0, [r4, #0] ; r0 := *r4 C17
b .nextbit ; C20
.justbit: ; C10
; no nops, branch taken is already 3 cycles
b .common ; C13
.stop:
str r1, [r2, #0] ; pin := lo
cpsie i ; enable irq
pop {r4,r5,r6,r7,pc}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/dfrobot/pxt-Math-Automatic.git
git@gitee.com:dfrobot/pxt-Math-Automatic.git
dfrobot
pxt-Math-Automatic
pxt-Math-Automatic
master

搜索帮助