矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 4747|回复: 8

STM32汇编315M解码

[复制链接]
     
发表于 2016-1-16 23:55:33 | 显示全部楼层 |阅读模式
以前写的程序吓唬小偷用的, 电路图找不到了。 315M遥控解码控制电灯

         .thumb                 
         .syntax unified
.section .data
anjianmabiao:        .int 0x5f5914,0x5f5912,0x5f5911,0x5f5918
         .equ STACKINIT, 0x20005000
         .equ yanshi,   0xffffffff
         .equ ledkongzhi, 0x20000204
         .equ diandeng,  0x422101b0
       
.section .text
vectors:        
        .word STACKINIT         
        .word _start + 1        
        .word _nmi_handler + 1  
        .word _hard_fault  + 1  
        .word _memory_fault + 1
        .word _bus_fault + 1   
        .word _usage_fault + 1
        .word 0
        .word 0
        .word 0
        .word 0
        .word 0
        .word 0
        .word 0
        .word 0
        .word _dingshiqi + 1
        .word 0
        .word 0
        .word 0
        .word 0
        .word 0
        .word 0
        .word 0
        .word _extizhongduan + 1
_start:
        ldr r0, = 0x20000000
        mov r1, # 0
        str r1, [r0]
        str r1, [r0, # 4]
        str r1, [r0, # 8]
        str r1, [r0, # 0x0c]
        str r1, [r0, # 0x100]
        mov r0, # 0
        mov r1, # 0
        mov r2, # 0
        mov r3, # 0
        mov r4, # 0
        mov r5, # 0
        mov r6, # 0
        mov r7, # 0
        mov r8, # 0
        mov r9, # 0
@@AFIO-MAPR 开SWD模式
        ldr r0, = 0x40010004
        ldr r1, = 0x02000000
        str r1, [r0]
shizhong:
        ldr r0, = 0x40021000
        ldr r1, = 0x14D83
        str r1, [r0]
gsszbz:
        ldr r2, [r0]
        ldr r1, = 0x20000
        tst r1, r2           @高速时钟标志位           
        bne rccchushihua
        b gsszbz
rccchushihua:
        ldr r0, = 0x40022000
        mov r1, # 0x00000032
        str r1, [r0]           @FLASH缓冲 缓冲开启
        ldr r0, = 0x40021004
        ldr r1, = 0x1D8400
        str r1, [r0]
        ldr r0, = 0x40021000
        ldr r1, = 0x1033D03
        str r1, [r0]
chaxun:
        ldr r2, [r0]
        ldr r1, = 0x2000000
        tst r1, r2
        bne rccgg
        b chaxun
rccgg:
        ldr r0, = 0x40021004
        ldr r1, = 0x1D8402
        str r1, [r0]
rccapb2enr:
        ldr r0, = 0x40021018
        mov r1, # 0x05
        str r1, [r0]

systick:
        ldr r0, = 0xe000e010
        mov r1, # 0
        str r1, [r0]
        ldr r1, = 0xffffff
        str r1, [r0, # 4]
        str r1, [r0, # 8]
        mov r1, # 0
        str r1, [r0]
        ldr r0, = 0xe000ed23  @systick优先级
        mov r1, # 240
        str r1, [r0]
ioshezhi:
        ldr r0, = 0x40010800 @ gpioa
        ldr r1, = 0x44444484
        str r1, [r0]
        ldr r1, = 0x44424444
        str r1, [r0, # 4]
       
        ldr r0, = 0x4001080C
        mov r1, # 0x02
        str r1, [r0]
extiexti:
        ldr r0, = 0x40010008 @AFIO_EXTICR1
        mov r1, # 0
        str r1, [r0] @PA1外部中断
        mov r1, # 0x02
        ldr r0, = 0x40010400 @EXTI_IMR中断屏蔽寄存器
        str r1, [r0]
        ldr r0, = 0x40010404 @EXTI_EMR事件屏蔽
        str r1, [r0]
        ldr r0, = 0x4001040c @EXTI_FTSR下降沿触发
        str r1, [r0]
        ldr r0, = 0xE000E100 @NVIC_ISER0 SETENA0
        mov r1, # 0x80 @ exti1开中断
        str r1, [r0]
kammengou:
        ldr r0, = 0x40003000
        ldr r1, = 0x5555
        str r1, [r0]
        mov r1, # 4
        str r1, [r0, # 4]
        ldr r1, = 0x28c
        str r1, [r0, # 8]
        ldr r1, = 0xaaaa
        str r1, [r0]
        ldr r1, = 0xcccc
        str r1, [r0]
zhuchengxu:
        ldr r0, = 0x40003000
        ldr r1, = 0xaaaa
        str r1, [r0]
        bl yaokong315jiema
        bl nageanjian
        ldr r0, = diandeng
        ldr r1, = 0x20000100
        ldr r2, [r1]
        cmp r2, # 4
        bne diandengce
        mov r1, # 1
        str r1, [r0]
       
diandengce:
        cmp r2, # 8
        bne zhuchengxu
        mov r1, # 0
        str r1, [r0]
        b zhuchengxu
       
nageanjian:
        push {r0-r6, lr}
        ldr r0, = 0x20000000
        ldr r2, = anjianmabiao
        ldr r3, = 0x20000004
anjianpanduan:
        ldr r4, [r3]
        ldr r5, [r2, r4]
        add r4, # 4
        str r4, [r3]
        cmp r4, # 0x0c
        bhi anjianfanhui
        ldr r1, [r0]
        cmp r1, r5
        bne anjianpanduan
        ldr r0, = 0x20000100
        str r4, [r0]
anjianfanhui:
        mov r4, # 0
        str r4, [r3]
        pop {r0-r6, pc}
       
       
yaokong315jiema:
        push {r0-r6, lr}
        ldr r0, = 0x2000006c
        ldr r2, = 0x20000010
        ldr r3, = 0x7000
        ldr r4, = 0x12000
        ldr r5, = 0x10000
        ldr r6, = 0x22000180
yaokongce:
        ldr r1, [r0], # - 4
        cmp r1, r3
        bhi yaokongce1
        mov r1, # 1
        str r1, [r6], # 4
        b yaokongce3
yaokongce1:
        cmp r1, r4
        bls yaokongce2
        b yaokongce3
yaokongce2:
        cmp r1, r5
        bls yaokongce3
        mov r1, # 0
        str r1, [r6], # 4
yaokongce3:
        cmp r0, r2
        bne yaokongce
        ldr r0, = 0x2000000c
        ldr r1, [r0]
        str r1, [r0, # - 0x0c]
        pop {r0-r6, pc}
       
_nmi_handler:
        bx lr
_hard_fault:
        bx lr
_memory_fault:
        bx lr
_bus_fault:
        bx lr
_usage_fault:
        bx lr
_dingshiqi:
        bx lr
_extizhongduan:
        push {r0-r12, lr}
        ldr r0, = 0xe000e010
        mov r1, # 0x07
        str r1, [r0]
chaxun315:
        ldr r1, = 0x42210104
        ldr r2, [r1]
        cmp r2, # 1
        bne chaxun315
        mov r1, # 0
        str r1, [r0]
        ldr r6, [r0, # 0x08]
        str r6, [r0, # 0x08]
        ldr r7, = 0xffffff
        sub r6, r7, r6
        ldr r2, = 0x5000
        cmp r6, r2
        bls yaokongfanhui
        ldr r2, = 0xa0000
        cmp r6, r2
        bhi yaokongfanhui1
        ldr r2, = 0x20000008
        ldr r3, [r2]
        add r3, # 4
        str r3, [r2]
        cmp r3, # 0x60
        bhi yaokongfanhui1
        ldr r0, = 0x2000000c
        str r6, [r0, r3]
        b yaokongfanhui
yaokongfanhui1:
        ldr r0, = 0x20000008
        mov r2, # 0
        str r2, [r0]
yaokongfanhui:
        ldr r0, = 0x40010414 @ exti_pr
        mov r1, # 0x02
        str r1, [r0]
        pop {r0-r12, pc}
       
       
       
发表于 2016-1-17 00:27:59 | 显示全部楼层
厉害,只试过用C语言解码315MHz遥控和红外遥控的程序。
回复 支持 反对

使用道具 举报

     
发表于 2016-1-17 09:51:16 | 显示全部楼层
汇编厉害。。
回复 支持 反对

使用道具 举报

     
发表于 2016-1-17 16:46:40 | 显示全部楼层
看不懂啊 大哥
回复 支持 反对

使用道具 举报

发表于 2016-10-24 21:01:54 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

     
发表于 2016-10-25 20:35:51 | 显示全部楼层
楼主厉害啊,拿下了 汇编!!
回复 支持 反对

使用道具 举报

     
发表于 2020-4-29 16:37:02 | 显示全部楼层
太牛了,佩服你。这是我目前唯一见过的,用纯汇编写stm32单片机的代码。

虽然我单片机也写了7/8年汇编,但是2003年后基本上就转c语言了,再也没有写过汇编了。stm32都是用c写的。

请问你的开发环境是用的keil 吗?或者是MDK ?
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2020-4-29 17:14:50 | 显示全部楼层
本帖最后由 yjmwxwx 于 2020-4-29 17:15 编辑

很简单的,就那么几条指令,就是所有函数都自己写比较麻烦,写出来的函数也不成熟。

回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2020-4-29 17:16:08 | 显示全部楼层
本帖最后由 yjmwxwx 于 2020-4-29 17:17 编辑
ljchip 发表于 2020-4-29 16:37
太牛了,佩服你。这是我目前唯一见过的,用纯汇编写stm32单片机的代码。

虽然我单片机也写了7/8年汇编, ...




很简单的,就那么几条指令,就是所有函数都自己写比较麻烦,写出来的函数也不成熟。

开发环境用的开源的,下面这帖子里有介绍我用的开发环境。

http://www.crystalradio.cn/forum.php?mod=viewthread&tid=1812569&extra=page%3D1
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2025-4-29 14:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表