⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1652.asm

📁 单片机开发资料光盘-双龙-686M.zip
💻 ASM
字号:
.include"8535def.inc"    
       rjmp  RESET
tab:.dw 0,78,157,236,314,393,466,541,616
    .dw 692,769,847,927,1009,1092,1177,1266
RESET:mov  r20,r16         ;A/D结果低6位送r20
      andi r20,$3f
      rol  r16             ;取A/D结果高4位送r17
      rol  r17
      rol  r16
      rol  r17
      add  r17,r17         ;r17*2
      ldi  Zh,high(tab*2)  ;取y1送r19:r18
      ldi  Zl,low(tab*2)      
      add  Zl,r17
      lpm
      mov  r18,r0
      adiw Zl,1
      lpm
      mov  r19,r0
      adiw Zl,1            ;取y2送r17:r16
      lpm
      mov  r16,r0
      adiw Zl,1
      lpm
      mov  r17,r0
      sub  r16,r18         ;求y2-y1
      sbc  r17,r19
      mov  r23,r18         ;保存y1送r24:r23
      mov  r24,r19
      mov  r18,r20         ;求(y2-y1)*(x-x1)/64
      clr  r19
      rcall mpy16s
      rol  r18
      rol  r19
      rol  r20
      rol  r18
      rol  r19
      rol  r20
      add  r23,r19         ;求y
      adc  r24,r20
here: rjmp here

mpy16s:	                   ;16位*16位带符号乘法
      clr	r21        ;清结果和进位位
      sub	r20,r20	
      ldi	r22,16	   ;初始化循环计数器
m16s_1:
      brcc	m16s_2	   ;进位位为 0 ,跳至m16s-2	
      add	r20,r16	   ;进位位为 1 
      adc	r21,r17	   ;结果3字节2字节加被乘数
m16s_2:
      sbrc	r18,0      ;如果当前位置位
      sub	r20,r16	   ;从结果字节2中减被乘数低字节
      sbrc	r18,0	   ;如果当前位置位
      sbc	r21,r17	   ;从结果字节2中减被乘数低字节
      asr	r21        ;算术右移结果和乘数
      ror	r20
      ror	r19
      ror	r18
      dec	r22        ;循环计数器减 1 
      brne	m16s_1     ;如没完成,再循环	
      ret

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -