12下一页
返回列表 发新帖我要提问本帖赏金: 20.00元(功能说明)

[STM32F0] 土造摇杆

[复制链接]
 楼主| yjmwxwx 发表于 2018-3-19 16:13 | 显示全部楼层 |阅读模式
AN, ov, ST, CD, LCD
本帖最后由 yjmwxwx 于 2018-3-19 16:25 编辑

材料一节木头、两个5ML针管、铜丝、铁皮
每个针管用铜丝绕70圈,然后用铁皮卷个铁心长度两个线圈长,木头劈开用铁皮钉起来。
语文太差不说了,直接上图, 原理STM32F030F4产生一路SPWM通过TL084输出两路5KHZ正弦波驱动针管中间的线圈,另外两个线圈输出电压通过TL084放大用单片机ADC采样,1602下面一行分别显示两个电压,加减号区分左右上下。

就是实验性质,没啥精度,没什么用。








视频

电路图不知道画的有没有错误,大体差不多
1.png


程序
yaogan.tar.gz (74.21 KB, 下载次数: 7)
代码
  1.   [url=home.php?mod=space&uid=72445]@[/url] stm32f030f4p6 asm
  2.          .thumb
  3.                  .syntax unified
  4. .section .data
  5. zhengxian1k:
  6.         .short 0x30,0x33,0x36,0x38,0x3b,0x3e,0x41,0x44,0x47,0x49,0x4c,0x4e,0x50,0x52,0x54,0x56,0x58,0x59,0x5b,0x5c,0x5d,0x5e,0x5e,0x5f,0x5f,0x5f,0x5f,0x5f,0x5e,0x5d,0x5c,0x5b,0x5a,0x59,0x57,0x55,0x53,0x51,0x4f,0x4d,0x4a,0x48,0x45,0x43,0x40,0x3d,0x3a,0x37,0x34,0x31,0x2e,0x2b,0x28,0x25,0x22,0x1f,0x1c,0x1a,0x17,0x15,0x12,0x10,0xe,0xc,0xa,0x8,0x6,0x5,0x4,0x3,0x2,0x1,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x2,0x3,0x4,0x6,0x7,0x9,0xb,0xd,0xf,0x11,0x13,0x16,0x18,0x1b,0x1e,0x21,0x24,0x27,0x29,0x2c,0x30
  7. jia:
  8.         .ascii "+"
  9. jian:
  10.         .ascii "-"
  11. lcdshuju:
  12.         .ascii  "yjmwxwx-20180317"
  13. dianhua:        
  14.         .ascii        "      15552208295"
  15. qq:
  16.         .ascii        "   QQ:3341656346"
  17.         .equ STACKINIT,                        0x20001000
  18.         .equ asciimabiao,                0x20000000
  19.         .equ jishu,                        0x20000010
  20.         .equ lvbozhizhen,                0x20000020
  21.         .equ lvbohuanchong,                0x20000024
  22.         .equ lvbozhizhen1,                0x20000120
  23.         .equ lvbohuanchong1,                0x20000124
  24.         .equ adccaiyang,                0x20000100
  25.         .section .text
  26. vectors:
  27.         .word STACKINIT
  28.         .word _start + 1
  29.         .word _nmi_handler + 1
  30.         .word _hard_fault  + 1
  31.         .word 0
  32.         .word 0
  33.         .word 0
  34.         .word 0
  35.         .word 0
  36.         .word 0
  37.         .word 0
  38.         .word _svc_handler +1
  39.         .word 0
  40.         .word 0
  41.         .word _pendsv_handler +1
  42.         .word _systickzhongduan +1               [url=home.php?mod=space&uid=72445]@[/url] 15
  43.         .word aaa +1     @ _wwdg +1          @ 0
  44.         .word aaa +1     @_pvd +1            @ 1
  45.         .word aaa +1     @_rtc +1            @ 2
  46.         .word aaa +1     @_flash +1          @ 3
  47.         .word aaa +1        @ _rcc + 1          @ 4
  48.         .word aaa +1      @_exti0_1  +1      @ 5
  49.         .word aaa +1      @ _exti2_3 +1      @ 6
  50.         .word aaa +1       @_exti4_15 +1     @ 7
  51.         .word aaa +1                         @ 8
  52.         .word aaa +1         @_dma1_1  +1    @ 9
  53.         .word aaa +1    @_dma1_2_3 +1        @ 10
  54.         .word aaa +1       @_dma1_4_5 +1     @ 11
  55.         .word aaa +1         @_adc1 +1          @ 12
  56.         .word aaa +1       @_tim1_brk_up +1  @ 13
  57.         .word aaa +1        @ _tim1_cc +1    @ 14
  58.         .word aaa +1         @_tim2 +1       @ 15
  59.         .word aaa +1          @_tim3 +1      @ 16
  60.         .word aaa +1                         @ 17
  61.         .word aaa +1                                @ 18
  62.         .word aaa +1        @_tim14 +1    @ 19
  63.         .word aaa +1                         @ 20
  64.         .word aaa +1         @_tim16 +1      @ 21
  65.         .word aaa +1         @_tim17 +1      @ 22
  66.         .word aaa +1          @_i2c   +1     @ 23
  67.         .word aaa +1                         @ 24
  68.         .word aaa +1           @_spi   +1    @ 25
  69.         .word aaa +1                         @ 26
  70.         .word aaa +1         @_usart1 +1     @ 27
  71.         .align 2

  72. _start:
  73. shizhong:
  74.         ldr r0, = 0x40021000 @ rcc
  75.         ldr r2, = 0x40022000   @FLASH访问控制
  76.         movs r1, # 0x32
  77.         str r1, [r2]           @FLASH缓冲 缓冲开启
  78.         ldr r0, = 0x40021000 @ rcc
  79.         ldr r1, = 0x100002
  80.         str r1, [r0, # 0x04]
  81.         ldr r1, = 0x1000001
  82.         str r1, [r0]
  83. dengrc:
  84.         ldr r1, [r0]
  85.         lsls r1, # 30
  86.         bpl dengrc
  87. dengpll:
  88.         ldr r1, [r0]
  89.         lsls r1, # 6
  90.         bpl dengpll
  91.         @0x34时钟控制寄存器 2 (RCC_CR2)
  92.         movs r1, # 0x01
  93.         str r1, [r0, # 0x34]  @ HSI开14M时钟
  94. dengdai14mshizhongwending:
  95.         ldr r1, [r0, # 0x34]
  96.         lsls r1, r1, # 30     @ 左移30位
  97.         bpl dengdai14mshizhongwending  @ 等待14M时钟稳定

  98. neicunqingling:
  99.         ldr r0, = 0x20000000
  100.         movs r1, # 0
  101.         ldr r3, = 0x1000
  102. neicunqinglingxunhuan:
  103.         subs r3, # 4
  104.         str r1, [r0, r3]
  105.         bne neicunqinglingxunhuan

  106. _waisheshizhong:                         @ 外设时钟
  107.         @+0x14=RCC_AHBENR
  108.         @0=DMA @2=SRAM @4=FLITF@6=CRC @17=PA @18=PB @19=PC @20=PD @22=PF
  109.         ldr r0, = 0x40021000
  110.         ldr r1, = 0x460005
  111.         str r1, [r0, # 0x14]

  112.         @+0x18外设时钟使能寄存器 (RCC_APB2ENR)
  113.         @0=SYSCFG @5=USART6EN @9=ADC @11=TIM1 @12=SPI1 @14=USART1 @16=TIM15 @17=TIM16 @18=TIM17 @22=DBGMCU
  114.         ldr r1, = 0xa00
  115.         str r1, [r0, # 0x18]
  116.         @+0X1C=RCC_APB1ENR
  117.         @1=TIM3 @4=TIM6 @5=TIM7 @8=TIM14 @11=WWDG @14=SPI @17=USRT2 @18=USART3 @20=USART5 @21=I2C1
  118.         @22=I2C2 @23=USB @28=PWR


  119. tim1chushiha:
  120.         ldr r0, = 0x40012c00 @ tim1_cr1
  121.         movs r1, # 0
  122.         str r1, [r0, # 0x28] @ psc
  123.         ldr r1, = 96
  124.         str r1, [r0, # 0x2c] @ ARR
  125.         ldr r1, = 0x68
  126.         str r1, [r0, # 0x1c] @ ccmr2  CC3
  127.         ldr r1, = 0x100    @  CC3
  128.         str r1, [r0, # 0x20] @ ccer
  129.         ldr r1, = 0x8000
  130.         str r1, [r0, # 0x44] @ BDTR
  131.         ldr r1, = 0x800 @ CC3 DMA
  132.         str r1, [r0, # 0x0c] @ DIER
  133.         ldr r1, = 0xe1
  134.         str r1, [r0]

  135.         
  136. _adcchushihua:
  137.         ldr r0, = 0x40012400  @ adc基地址
  138.         ldr r1, = 0x80000000
  139.         str r1, [r0, # 0x08]  @ ADC 控制寄存器 (ADC_CR)  @adc校准
  140. _dengadcjiaozhun:
  141.         ldr r1, [r0, # 0x08]
  142.          movs r1, r1
  143.         bmi _dengadcjiaozhun   @ 等ADC校准
  144. _kaiadc:
  145.         ldr r1, [r0, # 0x08]
  146.         movs r2, # 0x01
  147.         orrs r1, r1, r2
  148.         str r1, [r0, # 0x08]
  149. _dengdaiadcwending:
  150.         ldr r1, [r0]
  151.         lsls r1, r1, # 31
  152.         bpl _dengdaiadcwending @ 等ADC稳定
  153. _tongdaoxuanze:
  154.         ldr r1, = 0x01
  155.         str r1, [r0, # 0x28]    @ 通道选择寄存器 (ADC_CHSELR)
  156.         ldr r1, = 0x3000        @ 13 连续转换
  157.         str r1, [r0, # 0x0c]    @ 配置寄存器 1 (ADC_CFGR1)
  158.         movs r1, # 0                 @
  159.         str r1, [r0, # 0x14]    @ ADC 采样时间寄存器 (ADC_SMPR)
  160.         ldr r1, [r0, # 0x08]
  161.         movs r2, # 0x04         @ 开始转换
  162.         orrs r1, r1, r2
  163.         str r1, [r0, # 0x08]    @ 控制寄存器 (ADC_CR)

  164. dmachushihua:
  165.         @+0=LSR,+4=IFCR,
  166.         @+8=CCR1,+c=CNDTR1,+10=CPAR1+14=CMAR1,
  167.         @+1c=CCR2,+20=CNDTR2,+24=CPAR2,+28=CMAR2
  168.         @+30=CCR3,+34=CNDTR3,+38=CPAR2,+3c=CMAR3
  169.         @+44=CCR4,+48=CNDTR4,+4c=CPAR4,+50=CMAR4
  170.         @+58=CCR5,+5c=CNDTR5,+60=CPAR5,+64=CMAR5
  171.         @+6C=CCR6,+70=CNDTR6,+74=CPAR6,+78=CMAR6
  172.         @+80=CCR7,+84=CNDTR7,+88=CPAR7,+8c=CMAR7

  173.         @tim1ch3DMA
  174.         ldr r0, = 0x40020000
  175.         ldr r1, = 0x40012c3c @ 外设地址
  176.         str r1, [r0, # 0x60]
  177.         ldr r1, = zhengxian1k @ 储存器地址
  178.         str r1, [r0, # 0x64]
  179.         ldr r1, = 100             @点数
  180.         str r1, [r0, # 0x5c]
  181.         ldr r1, = 0x25b1         @ 储存到外设
  182.         str r1, [r0, # 0x58]

  183. _waishezhongduan:                                @外设中断
  184.         @0xE000E100    0-31  写1开,写0没效
  185.         @0XE000E180    0-31 写1关,写0没效
  186.         @0XE000E200    0-31 挂起,写0没效
  187.         @0XE000E280    0-31 清除, 写0没效

  188. _systick:                                @ systick定时器初始化

  189.         ldr r0, = 0xe000e010
  190.         ldr r1, = 0xffffff
  191.         str r1, [r0, # 4]
  192.         str r1, [r0, # 8]
  193.         movs r1, # 0x07
  194.         str r1, [r0]
  195.         
  196. io_she_zhi:
  197.         @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  198.         @a(0x48000000)b(0x48000400)c(0x48000800)d(0x48000c00)f(0x48001400)
  199.         @ 输入(00),通用输出(01),复用功能(10),模拟(11)
  200.         @偏移0x4 = 端口输出类型 @ (0 推挽),( 1 开漏)
  201.         @偏移0x8 = 输出速度  00低速, 01中速, 11高速
  202.         @偏移0xC = 上拉下拉 (00无上下拉,  01 上拉, 10下拉)
  203.         @偏移0x10 = 输入数据寄存器
  204.         @偏移0x14 = 输出数据寄存器
  205.         @偏移0x18 = 端口开  0-15置位
  206.         @偏移0x28 = 端口关
  207.         @0X20 = 复用低
  208.         @GPIO口0(0-3位)每个IO口占用4位
  209.         @ AF0 = 0X0000, AF1 = 0X0001, AF2 = 0X0010 AF3 = 0X0011, AF4 = 0X0100
  210.         @ AF5 = 0X0101, AF6 = 0X0111, AF7 = 0X1000
  211.         @0x24 = 复用高
  212.         @GPIO口8 (0-3位)每个IO口占用4位
  213.         @ AF0 = 0X0000, AF1 = 0X0001, AF2 = 0X0010 AF3 = 0X0011, AF4 = 0X0100
  214.         @ AF5 = 0X0101, AF6 = 0X0111, AF7 = 0X1000
  215.         @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

  216.         ldr r0, = 0x48000000
  217.         ldr r1, = 0x2820555f
  218.         str r1, [r0]
  219.         movs r1, # 0xfc  @ pa2-pa7开漏输出
  220.         str r1, [r0, # 0x04]
  221.         ldr r1, = 0x200
  222.         str r1, [r0, # 0x24]

  223. _lcdchushihua:
  224.         movs r0, # 0x33
  225.         movs r1, # 0
  226.         bl _xielcd
  227.         bl _lcdyanshi
  228.         movs r0, # 0x32
  229.         movs r1, # 0
  230.         bl _xielcd
  231.         bl _lcdyanshi
  232.         movs r0, # 0x28
  233.         movs r1, # 0
  234.         bl _xielcd
  235.         bl _lcdyanshi
  236.         movs r0, # 0x0c
  237.         movs r1, # 0
  238.         bl _xielcd
  239.         bl _lcdyanshi
  240.         movs r0, # 0x01
  241.         movs r1, # 0
  242.         bl _xielcd
  243.         bl _lcdyanshi

  244.         movs r6, # 16
  245. _denglvboqihuanchongman:                @等滤波器缓冲区满
  246.         bl _lvdtfuzhi
  247.         subs r6, r6, # 1
  248.         bne _denglvboqihuanchongman
  249.         

  250. tingting:
  251.         ldr r0, = jishu
  252.         ldr r1, [r0]
  253.         cmp r1, # 2
  254.         beq _lcddi1
  255.         cmp r1, # 4
  256.         beq _lcddi2
  257.         cmp r1, # 6
  258.         beq _lcddi3
  259.         b _tiaoguolcdxunhuan
  260. _lcddi1:
  261.         movs r0, # 0x80
  262.         ldr r1, = lcdshuju
  263.         movs r2, # 16
  264.         movs r3, # 0xff
  265.         bl _lcdxianshi
  266.         ldr r0, = 0x40020000
  267.         ldr r1, = 0
  268.         str r1, [r0, # 0x08]
  269.         b _tiaoguolcdxunhuan
  270. _lcddi2:
  271.         movs r0, # 0x80
  272.         ldr r1, = dianhua
  273.         movs r2, # 16
  274.         movs r3, # 0xff
  275.         bl _lcdxianshi
  276.         b _tiaoguolcdxunhuan
  277. _lcddi3:
  278.         
  279.         movs r0, # 0x80
  280.         ldr r1, = qq
  281.         movs r2, # 16
  282.         movs r3, # 0xff
  283.         bl _lcdxianshi
  284.         ldr r0, = jishu
  285.         movs r1, # 0
  286.         str r1, [r0]

  287. _tiaoguolcdxunhuan:
  288.         bl _lvdtfuzhi           @计算LVDT传感器幅值
  289.         mov r4, r0
  290.         cmp r1, # 1
  291.         beq _lvdtzheng
  292.         ldr r1, = jian
  293.         b _lvdtzhengfuxianshi
  294. _lvdtzheng:
  295.         ldr r1, = jia
  296. _lvdtzhengfuxianshi:
  297.         movs r0, # 0xc0         @LCD位置
  298.         movs r2, # 1            @长度
  299.         movs r3, # 0xff         @没小数点
  300.         bl _lcdxianshi

  301.         mov r0, r4
  302.         movs r1, # 4
  303.         ldr r2, = asciimabiao
  304.         movs r3, # 0xff
  305.         bl _zhuanascii

  306.         movs r0, # 0xc1
  307.         ldr r1, = asciimabiao
  308.         movs r2, # 4
  309.         bl _lcdxianshi

  310.         bl _lvdtfuzhi1           @计算LVDT传感器幅值
  311.         mov r4, r0
  312.         cmp r1, # 1
  313.         beq _lvdtzheng1
  314.         ldr r1, = jian
  315.         b _lvdtzhengfuxianshi1
  316. _lvdtzheng1:
  317.         ldr r1, = jia
  318. _lvdtzhengfuxianshi1:
  319.         movs r0, # 0xc8         @LCD位置
  320.         movs r2, # 1            @长度
  321.         movs r3, # 0xff         @没小数点
  322.         bl _lcdxianshi

  323.         mov r0, r4
  324.         movs r1, # 4
  325.         ldr r2, = asciimabiao
  326.         movs r3, # 0xff
  327.         bl _zhuanascii

  328.         movs r0, # 0xc9
  329.         ldr r1, = asciimabiao
  330.         movs r2, # 4
  331.         bl _lcdxianshi

  332.         b tingting
  333.         
  334. _lvdtfuzhi:                @出
  335.                         @R0=幅值,R1=相位
  336.         push {r2-r7,lr}
  337.         ldr r0, = 0x40012400
  338.         movs r1, # 0x01
  339.         str r1, [r0, # 0x28]
  340.         bl _jianbo                        @检波90、270
  341.         bl _jisuanfuzhi                        @计算90幅度
  342.         mov r2, r0
  343.         mov r0, r1
  344.         bl _jisuanfuzhi                        @计算270幅度
  345.         mov r1, r0
  346.         mov r0, r2
  347.         bl _xiangweipanduan                @判断相位
  348.         mov r4, r1
  349.         mov r3, r0
  350.         ldr r0, = lvbohuanchong                @滤波器缓冲区
  351.         movs r1, # 16                        @级数
  352.         ldr r2, = lvbozhizhen                @滤波器指针
  353.         bl _lvboqi                        @平滑,平均滤波器
  354.         mov r1, r4
  355.         pop {r2-r7,pc}

  356. _lvdtfuzhi1:
  357.         push {r2-r7,lr}
  358.         ldr r0, = 0x40012400
  359.         movs r1, # 0x02
  360.         str r1, [r0, # 0x28]
  361.         bl _jianbo                      @检波90、270
  362.         bl _jisuanfuzhi                 @计算90幅度
  363.         mov r2, r0
  364.         mov r0, r1
  365.         bl _jisuanfuzhi                 @计算270幅度
  366.         mov r1, r0
  367.         mov r0, r2
  368.         bl _xiangweipanduan             @判断相位
  369.         mov r4, r1
  370.         mov r3, r0
  371.         ldr r0, = lvbohuanchong1         @滤波器缓冲区
  372.         movs r1, # 16                    @级数
  373.         ldr r2, = lvbozhizhen1           @滤波器指针
  374.         bl _lvboqi                      @平滑,平均滤波器
  375.         mov r1, r4

  376.         pop {r2-r7,pc}
  377. _xiangweipanduan:                @相位判断
  378.                                 @入R0=90度,R1=270度
  379.                                 @出R0=相之间相差的数值,
  380.                                 @出R1=1,90度是正,R1=0,90度是负
  381.         push {r2}
  382.         subs r2, r0, r1
  383.         bpl _adc90shizheng
  384.         subs r2, r1, r0
  385.         bpl _adc90shifu
  386.         cmp r0, r1
  387.         bne _xiangweipanduanfanhui
  388. _adc90shizheng:
  389.         mov r0, r2
  390.         movs r1, # 1
  391.         pop {r2}
  392.         bx lr
  393. _adc90shifu:
  394.         mov r0, r2
  395.         movs r1, # 0
  396.         pop {r2}
  397.         bx lr
  398. _xiangweipanduanfanhui:
  399.         movs r0, # 0
  400.         movs r1, # 1
  401.         pop {r2}
  402.         bx lr
  403.         
  404.         
  405. _jisuanfuzhi:                        @计算幅值
  406.                                 @入R0出R0
  407.                                 @R0=ADC90度采样
  408.         push {r1-r3,lr}
  409.         cmp r0, # 0
  410.         beq _adcshi0fanhui
  411.         ldr r1, = 0x04                @实 Q15
  412.         ldr r2, = 0xffff8004    @虚 Q15
  413.         mov r3, r0
  414.         muls r0, r0, r1                @实
  415.         asrs r0, r0, # 15
  416.         muls r3, r3, r2                @虚
  417.         asrs r3, r3, # 15
  418. _shibushibushi0:                @检测实部是不是负数
  419.         movs r0, r0
  420.         bpl _fzbushifushu1
  421.         mvns r0, r0                @是负数转成正数
  422.         adds r0, r0, # 1
  423. _fzbushifushu1:                        @检测虚部是不是负数
  424.         movs  r3, r3
  425.         bpl _fzbushifushu
  426.         mvns r3, r3                @是负数转成正数
  427.         adds r3, r3, # 1
  428. _fzbushifushu:
  429.         adds r0, r0, r3                @相加得到副值
  430. _adcshi0fanhui:        
  431.         pop {r1-r3,pc}
  432.         
  433. _jianbo:                                @检波
  434.                                         @输出r0=90度,R1=270度
  435.         push {r2-r4,lr}
  436.         ldr r2, = 0x4002005c
  437.         ldr r3, = 0x40012440
  438.         cpsid i
  439. _jianbo90du:
  440.         ldr r4, [r2]
  441.         cmp r4, # 25
  442.         bne _jianbo90du
  443.         ldr r0, [r3]                        @取出90度
  444. _jianbo270du:
  445.         ldr r4, [r2]
  446.         cmp r4, # 75
  447.         bne _jianbo270du
  448.         ldr r1, [r3]
  449.         cpsie i
  450.         pop {r2-r4,pc}

  451. _lvboqi:                                @滤波器
  452.                         @R0=地址,R1=长度,r2=表指针地址,r3=ADC数值
  453.                         @出R0=结果
  454.         push {r1-r7,lr}        
  455.         ldr r5, [r2]                @读出表指针
  456.         lsls r6, r1, # 2        
  457.         str r3, [r0, r5]        @数值写到滤波器缓冲区
  458.         adds r5, r5, # 4
  459.         cmp r5, r6
  460.         bne _lvboqimeidaohuanchongquding
  461.         movs r5, # 0
  462. _lvboqimeidaohuanchongquding:
  463.         str r5, [r2]
  464.         movs r7, # 0
  465. _lvboqixunhuan:
  466.         cmp r5, r6
  467.         bne _lvbozonghe
  468.         movs r5, # 0
  469. _lvbozonghe:
  470.         ldr r4, [r0, r5]
  471.         adds r5, r5, # 4
  472.         adds r7, r7, r4
  473.         subs r1, r1, # 1
  474.         bne _lvboqixunhuan
  475.         asrs r0, r7, # 4        @修改
  476.         pop {r1-r7,pc}
  477.         

  478. _lcdxianshi:                          @r0=LCD位置,r1=数据地址,r2=长度
  479.         push {r0-r4,lr}
  480.         mov r4, r1

  481.         movs r1, # 0
  482.         bl _xielcd

  483.         movs r1, # 1
  484.         movs r3, # 0
  485. _lcdxianshixunhuan:
  486.         ldrb r0, [r4,r3]
  487.         bl _xielcd
  488.         adds r3, r3, # 1
  489.         cmp r3, r2
  490.         bne _lcdxianshixunhuan
  491.         pop {r0-r4,pc}

  492. _lcdyanshi:
  493.         push {r5,lr}
  494.         ldr r5, = 0x2000
  495. _lcdyanshixunhuan:
  496.         subs r5, r5, # 1
  497.         bne _lcdyanshixunhuan
  498.         pop {r5,pc}

  499. _xielcd:                        @入R0=8位,r1=0命令,r1=1数据
  500.         push {r0-r7,lr}
  501.         lsrs r6, r0, # 4
  502.         lsls r0, r0, # 28
  503.         lsrs r0, r0, # 28
  504.         movs r2, # 0x80                @ RS
  505.         movs r3, # 0x40                @ E
  506.         movs r5, # 0x3c
  507.         ldr r4, = 0x48000000
  508.         cmp r1, # 0
  509.         beq _lcdmingling
  510.         str r2, [r4, # 0x18]        @RS=1
  511.         b _lcdshuju
  512. _lcdmingling:
  513.         str r2, [r4, # 0x28]        @RS=0
  514. _lcdshuju:
  515.         str r3, [r4, # 0x18]        @E=1
  516.         str r5, [r4, # 0x28]

  517.         lsls r7, r6, # 31
  518.         lsrs r7, r7, # 26
  519.         str r7, [r4, # 0x18]

  520.         lsrs r7, r6, # 1
  521.         lsls r7, r7, # 31
  522.         lsrs r7, r7, # 27
  523.         str r7, [r4, # 0x18]

  524.         lsrs r7, r6, # 2
  525.         lsls r7, r7, # 31
  526.         lsrs r7, r7, # 28
  527.         str r7, [r4, # 0x18]

  528.         lsrs r7, r6, # 3
  529.         lsls r7, r7, # 31
  530.         lsrs r7, r7, # 29
  531.         str r7, [r4, # 0x18]

  532.         bl _lcdyanshi
  533.         str r3, [r4, # 0x28]        @E=0


  534.         str r3, [r4, # 0x18]    @E=1
  535.         str r5, [r4, # 0x28]

  536.         lsls r7, r0, # 31
  537.         lsrs r7, r7, # 26
  538.         str r7, [r4, # 0x18]

  539.         lsrs r7, r0, # 1
  540.         lsls r7, r7, # 31
  541.         lsrs r7, r7, # 27
  542.         str r7, [r4, # 0x18]

  543.         lsrs r7, r0, # 2
  544.         lsls r7, r7, # 31
  545.         lsrs r7, r7, # 28
  546.         str r7, [r4, # 0x18]

  547.         lsrs r7, r0, # 3
  548.         lsls r7, r7, # 31
  549.         lsrs r7, r7, # 29
  550.         str r7, [r4, # 0x18]

  551.         bl _lcdyanshi
  552.         str r3, [r4, # 0x28]    @E=0

  553.         pop {r0-r7,pc}
  554.         .ltorg


  555. _zhuanascii:                                        @ 16进制转数码管码
  556.                 @ R0要转的数据, R1长度,R2结果表首地址, r3=小数点位置
  557.         push {r0-r7,lr}
  558.         mov r7, r3
  559.         mov r5, r0
  560.         mov r6, r1
  561.         movs r1, # 10
  562. _xunhuanqiuma:
  563.         bl _chufa
  564.         mov r4, r0
  565.         muls r4, r1
  566.         subs r3, r5, r4
  567.         adds r3, r3, # 0x30
  568.         mov r5, r0
  569.         subs r6, r6, # 1
  570.         beq _qiumafanhui
  571.         cmp r6, r7
  572.         bne _meidaoxiaoshudian
  573.         movs r4, # 0x2e                @小数点
  574.         strb r4, [r2,r6]        @插入小数点
  575.         subs r6, r6, # 1
  576. _meidaoxiaoshudian:
  577.         strb r3, [r2,r6]
  578.         movs r6, r6
  579.         bne _xunhuanqiuma
  580.         pop {r0-r7,pc}
  581. _qiumafanhui:
  582.         strb r3, [r2, r6]
  583.         pop {r0-r7,pc}

  584.         
  585. _chufa:                                @软件除法
  586.         @ r0 除以 r1 等于 商(r0)余数R1
  587.         push {r1-r4,lr}
  588.         cmp r0, # 0
  589.         beq _chufafanhui
  590.         cmp r1, # 0
  591.         beq _chufafanhui
  592.         mov r2, r0
  593.         movs r3, # 1
  594.         lsls r3, r3, # 31
  595.         movs r0, # 0
  596.         mov r4, r0
  597. _chufaxunhuan:
  598.         lsls r2, r2, # 1
  599.         adcs r4, r4, r4
  600.         cmp r4, r1
  601.         bcc _chufaweishubudao0
  602.         adds r0, r0, r3
  603.         subs r4, r4, r1
  604. _chufaweishubudao0:
  605.         lsrs r3, r3, # 1
  606.         bne _chufaxunhuan
  607. _chufafanhui:
  608.         pop {r1-r4,pc}
  609.         .ltorg


  610. _nmi_handler:
  611.         bx lr
  612. _hard_fault:
  613.         bx lr
  614. _svc_handler:
  615.         bx lr
  616. _pendsv_handler:
  617.         bx lr
  618. _systickzhongduan:
  619.         ldr r2, = jishu
  620.         ldr r0, = 0xe0000d04
  621.         ldr r3, [r2]
  622.         ldr r1, = 0x02000000
  623.         adds r3, r3, # 1
  624.         str r3, [r2]
  625.         str r1, [r0]                 @ 清除SYSTICK中断
  626. aaa:
  627.         bx lr




打赏榜单

21ic小喇叭 打赏了 20.00 元 2018-08-28

mmuuss586 发表于 2018-3-19 20:23 | 显示全部楼层
全都贴上来,看起来都累
 楼主| yjmwxwx 发表于 2018-3-20 00:00 | 显示全部楼层
mmuuss586 发表于 2018-3-19 20:23
全都贴上来,看起来都累

谢谢版主的指导,确实看起来不方便,以后改正。
蝴蝶泉2018 发表于 2018-3-20 00:20 | 显示全部楼层
汇编!其实偶尔有空,用STM32做做自己想做的东西,不一定为了赚钱,就如大学时期,第一次用腐蚀板做个跑马灯,已让人兴奋不已!不错不错...
antusheng 发表于 2018-3-20 08:47 | 显示全部楼层
这才叫大神。
yanhaijian 发表于 2018-3-20 09:20 | 显示全部楼层
条件看上去挺艰苦啊。
antusheng 发表于 2018-3-20 13:23 | 显示全部楼层
高手啊,这装备,这汇编代买。
wangjiahao88 发表于 2018-3-20 13:49 | 显示全部楼层
这个 是驾校联系 模拟用的 档位器吗?
dirtwillfly 发表于 2018-3-20 19:56 | 显示全部楼层
wangjiahao88 发表于 2018-3-20 13:49
这个 是驾校联系 模拟用的 档位器吗?

我看着也是档位,哈哈
dirtwillfly 发表于 2018-3-20 19:56 | 显示全部楼层
楼主的条件好艰苦
 楼主| yjmwxwx 发表于 2018-3-20 21:11 | 显示全部楼层
wangjiahao88 发表于 2018-3-20 13:49
这个 是驾校联系 模拟用的 档位器吗?

不是模拟档位,我想做个飞行摇杆,没什么材料就做成这个样子了。。
 楼主| yjmwxwx 发表于 2018-3-20 21:14 | 显示全部楼层
dirtwillfly 发表于 2018-3-20 19:56
楼主的条件好艰苦

电路板都没有,不过都是自己懒的结果,勤快点打个工就好了。
 楼主| yjmwxwx 发表于 2018-3-20 21:20 | 显示全部楼层
antusheng 发表于 2018-3-20 13:23
高手啊,这装备,这汇编代买。

我小学学历自学的单片机,没办法只学过汇编,我写的代码都是入门级的,能**到今天也不容易。

评论

闻道有先后,术业有专攻,共勉。  发表于 2018-3-21 16:27
dirtwillfly 发表于 2018-3-21 08:07 | 显示全部楼层
yjmwxwx 发表于 2018-3-20 21:20
我小学学历自学的单片机,没办法只学过汇编,我写的代码都是入门级的,能**到今天也不容易。 ...

加油
zhuomuniao110 发表于 2018-3-21 09:10 | 显示全部楼层
冲这场地,此贴必火,哈哈
zhuomuniao110 发表于 2018-3-21 09:11 | 显示全部楼层
楼主是**挑一的奇才,加油
877049204 发表于 2018-3-21 10:23 | 显示全部楼层
很666
877049204 发表于 2018-3-21 10:26 | 显示全部楼层
敢想敢做,非常牛
caijie001 发表于 2018-3-21 12:20 | 显示全部楼层
66666666666666666666666
simonliu009 发表于 2018-3-21 17:17 | 显示全部楼层
这条件,这环境、这汇编....佩服
您需要登录后才可以回帖 登录 | 注册

本版积分规则

122

主题

2952

帖子

54

粉丝
快速回复 在线客服 返回列表 返回顶部