发新帖我要提问
12
返回列表
打印

请教tyw大叔关于可控硅调压调速的问题 谢谢

[复制链接]
楼主: cyh642399931
手机看帖
扫描二维码
随时随地手机跟帖
21
PowerAnts| | 2010-12-23 13:06 | 只看该作者 回帖奖励 |倒序浏览
别问了,就是老T所说的调功

使用特权

评论回复
22
maychang| | 2010-12-23 13:09 | 只看该作者
15楼:
晶闸管调相可不是过零触发,是交流过零后延迟一段时间触发。检测交流过零,是为了与交流电同步。
大蚂蚁说的“丢波法”,老tyw说的 调 功 法 是一回事,是在交流过零时触发。

使用特权

评论回复
23
cyh642399931|  楼主 | 2010-12-23 13:21 | 只看该作者
晕回五个就没办法回了  我明白了 非常感谢啊  还有一个我想问 电机什么情况下转不了啊?还是要使电机转起来程序中还要什么处理啊?

使用特权

评论回复
24
tyw| | 2010-12-23 14:00 | 只看该作者
吊扇低于100v左右转不动了,具体看负载大小,电压低了,转矩小于负载就不动了.
想测试需加传感器.

使用特权

评论回复
25
cyh642399931|  楼主 | 2010-12-23 14:41 | 只看该作者
24# tyw
谢谢!!有没有不要用传感器就可以测速的,好像在网上看过……

使用特权

评论回复
26
tanhailin| | 2010-12-23 20:30 | 只看该作者
学习了:handshake

使用特权

评论回复
27
cyh642399931|  楼主 | 2010-12-23 21:39 | 只看该作者
怎么没用说哦???

使用特权

评论回复
28
cyh642399931|  楼主 | 2010-12-24 09:25 | 只看该作者
.include "m16def.inc" ;滚烫机(热转印机)旧面板,高速卷膜
.def   timer_n=r1
.def   sw5=r2         ;不加中间继电器(Y3)控制圈泊电机电位器
.def   sw4=r3         ;与lsc1.asm相同,y2:y5:y6同步(lsc5改进型)
.def   sw3=r4         ;水平试位到位返回(08.1.4)
.def   sw2=r5         ;pxx1 水平限位 y5
.def   sw1=r6         ;pxx2 烫印计时 y2
.def   step_num=r7    ;(标准)
.def   data_bufl=r8
.def   data_bufh=r9
.def   ring_timer=r10
.def   output_buf=r11
.equ   y6=0
.equ   y5=1
.equ   y4=2
.equ   y3=3
.equ   y2=4
.equ   y1=5
.equ   speaker=6

.def   data_buf0=r12
.def   data_buf1=r13
.def   mode_num=r14
.def   dl_num=r15

.def   r_key0=r16
.equ   key0_bit=$01
.equ   key1_bit=$02
.equ   key2_bit=$04
.equ   key3_bit=$08
.equ   key4_bit=$10
.equ   key5_bit=$20
.equ   key6_bit=$40
.equ   key7_bit=$80
.def   r_key1=r17
.equ   key8_bit=$01
.equ   key9_bit=$02
.equ   keya_bit=$04
.equ   keyb_bit=$08
.equ   sw5_bit=$10
.equ   sw3_bit=$20

.equ   key0=$60
.equ   key1=$61
.equ   key2=$62
.equ   key3=$63
.equ   key4=$64
.equ   key5=$65
.equ   key6=$66
.equ   key7=$67
.equ   key8=$68
.equ   key9=$69
.equ   keya=$6a
.equ   keyb=$6b

.equ   dl_1l=$6c
.equ   dl_1h=$6d
.equ   dl_2l=$6e
.equ   dl_2h=$6f
.equ   dl_3l=$70
.equ   dl_3h=$71
.equ   dl_4l=$72
.equ   dl_4h=$73
.equ   dl_5l=$74
.equ   dl_5h=$75
.equ   dl_6l=$76
.equ   dl_6h=$77
.equ   counter_l=$78
.equ   counter_h=$79

.equ   dl_pre_1l=$7a
.equ   dl_pre_1h=$7b     ;$7a-85


.def   data_buf=r18

.def   r_bit0=r19
.equ   working_bit=0
.equ   auto_bit=1
.equ   mode_bit=2
.equ   dl_num_bit=3
.equ   time_bit=4        ;4 5
.equ   working_bit1=6
.equ   y6_bit=7

.def   disp_bufl=r20
.def   disp_bufh=r21
.def   r_portd  =r22
.def   disp_num=r23
.def   al=r24
.def   ah=r25

.org   $0000
       rjmp  reset
.org   $0004
       rjmp  int1_prg
.org   $012
       rjmp  tim0_ovf

.org   $0080
reset_setup:
       ldi   al,$00
       out   twcr,al
       out   assr,al

       ldi al,$00
       out   ddra,al
       ldi   al,$ff
       out   ddrb,al
       ldi   al,$7f
       out   ddrc,al
       ldi   al,$17
       out   ddrd,al

       ldi   al,$0c               ;rising edge of int1
       out   mcucr,al
       ldi   al,$80               ;int1 interrupt enable
       out   gicr,al

       ldi   al,$01
       out   timsk,al
       ldi   al,05             ;1024ck 4mhz
       out   tccr0,al
       ret
reset:
.org   $0100

       ldi   r_bit0,$04
       ldi   r_key0,$00
       ldi   r_key1,$00
          ldi      zl,low(key2)
          ldi      zh,high(key2)  
          ldi      ah,$55
          st    z,ah
          ldi      zl,low(key8)
          ldi      zh,high(key8)  
          ldi      ah,$55
          st    z,ah
       ldi   al,$0
       mov   ah,al
       ldi   disp_num,$5
start1:      dec   al
       nop
       nop
       nop
       cpi   al,$1
       brne  start1
       dec   ah
       cpi   ah,$1
       brne  start1
       dec   disp_num
       cpi   disp_num,$1
       brne  start1

       ldi   al,$04
       out   sph,al
       ldi   al,$5f
       out   spl,al
       rcall reset_setup

       ldi   al,$00
       out   portc,al
       out   portb,al

       ldi   r_key0,$00
       ldi   r_key1,$00
       ldi   al,$fa
       mov   ring_timer,al
       ldi   zl,low(dl_1l)
       ldi   zh,high(dl_1l)
       ldi   al,$0
       st z+,al
       st z+,al
       st z+,al
       st z+,al
       st z+,al
       st z+,al
       st z+,al
       st z+,al
       st z+,al
       st z+,al
       st z+,al
       st z+,al
       st z+,al
       st z+,al
       rcall eeprom_r
       ldi   r_bit0,$04

loop:  ldi   al,$04
       out   sph,al
       ldi   al,$5f
       out   spl,al
       sbrs  r_bit0,mode_bit
       rcall reset_setup
          ldi   al,$80
          out   sreg,al
          nop
          ldi   al,$00
          out   sreg,al

          mov      al,sw4
          andi  al,$0f
          cpi      al,$0f
          brne  loop_2
          cbr      r_bit0,$01  
loop_2:      sbrs  r_bit0,working_bit
          rjmp  stop_setup
          sbrs  r_bit0,working_bit1
          rjmp  loop_3
          rjmp  loop_c
loop_3:      ldi      al,$00
          cp    al,sw1
          brne  loop
          cbi      portc,y5
          rjmp  loop



loop_c:      ldi      al,$00
          cp    al,sw2
          brne  mode_num_0
          in    al,portc
          sbrs  al,y6
          rjmp  mode_num_0
          sbrc  mode_num,0
          rjmp  loop_c1
          sbi      portc,y5
          rjmp  mode_num_0
loop_c1:  sbi      portc,y2
          rjmp  mode_num_0
mode_num_0:  ldi      al,$ff
          cp    al,sw2
          brne  mode_num_1
          cbi      portc,y5
          cbi      portc,y2

mode_num_1:  ldi      al,$01
          cp    al,step_num
          brne  mode_num_10
          rjmp  step_1
mode_num_10:ldi    al,$02
          cp    al,step_num
          brne  mode_num_11
          rjmp  step_2
mode_num_11:ldi    al,$03
          cp    al,step_num
          brne  mode_num_12
          rjmp  step_3
mode_num_12:ldi    al,$04
          cp    al,step_num      
          brne  step_0
          rjmp  step_4
         
step_0:      ldi      zl,low(dl_3l)
          ldi      zh,high(dl_3l)
          ld    al,z+
          ld    ah,z
          or    al,ah
          brne  loop_cc
          sbi      portc,y1
loop_cc:  rjmp  loop

          cbr      r_bit0,$80
          in    al,portc
          sbrc  al,y1
          rjmp  step_0_1
          sbi      portc,y1
          cbi      portc,y6
          cbi      portc,y5
          cbi      portc,y2
          ldi      zl,low(dl_pre_1l)
          ldi      zh,high(dl_pre_1l)
          ld    al,z+
          ld    ah,z
          ldi      zl,low(dl_1l)
          ldi      zh,high(dl_1l)
          st    z+,al
          st    z,ah
          rjmp  loop
step_0_1: sbrc  mode_num,2
          rjmp  step_0_3
          ldi      zl,low(dl_1l)
          ldi      zh,high(dl_1l)
          ld    al,z+
          ld    ah,z
          or    al,ah
          brne  step_0_2
          cbi      portc,y1
          cbi      portc,y3
          inc      step_num
step_0_2: rjmp  loop

step_0_3: ldi      al,$00
          cp    al,sw3
          brne  step_0_31
          sbrc  r_key1,5
          rjmp  step_0_33
          rjmp  loop
step_0_31:   ldi      al,$03
          cp       al,sw3
          brne  step_0_32
          sbr      r_key1,sw3_bit
step_0_32:   rjmp  loop
step_0_33:   cbi      portc,y1
          cbi      portc,y3
          cbr      r_key1,sw3_bit
          inc      step_num
          rjmp  loop

step_1:      mov      al,r_bit0
          sbrc  al,y6_bit
          rjmp  step_1_1
          sbi      portc,y6

          ldi      al,$00
          cp    al,sw2
          brne  step_1_0
          sbr      r_bit0,$80

          ldi      zl,low(dl_pre_1l+2)
          ldi      zh,high(dl_pre_1l+2)
          ld    al,z+
          ld    ah,z
          ldi      zl,low(dl_2l)
          ldi      zh,high(dl_2l)
          st    z+,al
          st    z,ah
          ldi      zl,low(dl_pre_1l+4)
          ldi      zh,high(dl_pre_1l+4)
          ld    al,z+
          ld    ah,z
          ldi      zl,low(dl_3l)
          ldi      zh,high(dl_3l)
          st    z+,al
          st    z,ah
step_1_0: rjmp  loop
step_1_1: sbrc  mode_num,1
          rjmp  step_1_2
          in    al,portc
          sbrc  al,y1
          rjmp  step_1_2
          ldi      zl,low(dl_3l)
          ldi      zh,high(dl_3l)
          ld    al,z+
          ld    ah,z
          or    al,ah
          brne  step_1_2
          sbi      portc,y1
          ldi      zl,low(dl_pre_1l+6)
          ldi      zh,high(dl_pre_1l+6)
          ld    al,z+
          ld    ah,z
          ldi      zl,low(dl_4l)
          ldi      zh,high(dl_4l)
          st    z+,al
          st    z,ah
step_1_2: sbrs  mode_num,0
          rjmp  step_1_3
          ldi      zl,low(dl_2l)
          ldi      zh,high(dl_2l)
          ld    al,z+
          ld    ah,z
          or    al,ah
          brne  step_1_5
          rjmp  step_1_4
step_1_3: ldi      al,$00
          cp    al,sw1
          breq  step_1_4
          sbrc  mode_num,2
          rjmp  loop
          sbrc  mode_num,1
          rjmp  loop
          cp    al,sw3
          brne  step_1_31
          sbrc  r_key1,5
          rjmp  step_1_4
          rjmp  loop
step_1_31:   ldi      al,$03
          cp       al,sw3
          brne  step_1_32
          sbr      r_key1,sw3_bit
step_1_32:   rjmp  loop

step_1_4: cbi      portc,y6
          cbi      portc,y5
          cbi      portc,y2
          cbr      r_key1,sw3_bit
          cbr      r_bit0,$80
          ldi      zl,low(counter_l)
          ldi      zh,high(counter_l)
          ld    al,z+
          ld    ah,z
          adiw  al,$01
          st    z,ah
          st    -z,al
          inc      step_num
          sbrs  mode_num,1
          rjmp  loop
          ldi      zl,low(dl_pre_1l+4)
          ldi      zh,high(dl_pre_1l+4)
          ld    al,z+
          ld    ah,z
          ldi      zl,low(dl_3l)
          ldi      zh,high(dl_3l)
          st    z+,al
          st    z,ah
step_1_5: rjmp  loop

step_2:      sbrs  mode_num,1
          rjmp  step_2_2
          in    al,portc
          sbrc  al,y1
          rjmp  step_2_2
          ldi      zl,low(dl_3l)
          ldi      zh,high(dl_3l)
          ld    al,z+
          ld    ah,z
          or    al,ah
          brne  step_2_1
          sbi      portc,y1
          sbi      portc,y3
          ldi      zl,low(dl_pre_1l+6)
          ldi      zh,high(dl_pre_1l+6)
          ld    al,z+
          ld    ah,z
          ldi      zl,low(dl_4l)
          ldi      zh,high(dl_4l)
          st    z+,al
          st    z,ah
step_2_1: rjmp  loop

step_2_2: ldi      zl,low(dl_4l)
          ldi      zh,high(dl_4l)
          ld    al,z+
          ld    ah,z
          or    al,ah
          brne  step_2_4
step_2_3: cbi      portc,y1
          cbi      portc,y3
          inc      step_num
          rjmp  loop
step_2_4: sbrc  mode_num,2
          rjmp  loop
          ldi      al,$00         
          cp    al,sw3
          breq  step_2_3
          rjmp  loop

step_3:      inc      step_num
          ldi      zl,low(dl_pre_1l+8)
          ldi      zh,high(dl_pre_1l+8)
          ld    al,z+
          ld    ah,z
          ldi      zl,low(dl_5l)
          ldi      zh,high(dl_5l)
          st    z+,al
          st    z,ah
          rjmp  loop

step_4:      ldi      zl,low(dl_5l)
          ldi      zh,high(dl_5l)
          ld    al,z+
          ld    ah,z
          or    al,ah
          brne  step_4_1
          sbrs  r_bit0,auto_bit
          rjmp  step_4_2
STEP_4_0: clr      step_num
step_4_1: rjmp  loop
step_4_2: in    al,portc
          sbrc  al,y1
          rjmp  loop
          cbr      r_bit0,$01  
          rjmp  step_4_0
int1_prg: push  al
          push  ah
          in    al,sreg
          push  al
          push  zl
          push  zh
          ldi      zl,low(dl_pre_1l+4)
          ldi      zh,high(dl_pre_1l+4)
          ld    al,z+
          ld    ah,z
          ldi      zl,low(dl_3l)
          ldi      zh,high(dl_3l)
          st    z+,al
          st    z,ah
          cbi      portc,y1
          pop      zh
          pop      zl
          pop      al
          out      sreg,al
          pop      ah
          pop      al
          reti

stop_setup:  cbr      r_bit0,$40
          in    al,portc
          sbrs  al,y6
          rjmp  stop_setup1
          cbi      portc,y6
          ldi      al,$32         ;0.5 second
          ldi      ah,$00
          ldi      zl,low(dl_6l)
          ldi      zh,high(dl_6l)
          st    z+,al
          st    z,ah
          rjmp  loop
stop_setup1:ldi    zl,low(dl_6l)
          ldi      zh,high(dl_6l)
          ld    al,z+
          ld    ah,z
          or    al,ah
          brne  stop_setup2
          cbi      portc,y4
          cbi      portc,y5
          cbi      portc,y2
stop_setup2:rjmp   loop

disp_setup:
          sbrc  r_bit0,mode_bit
          rjmp  disp_mode
          sbrc  r_bit0,time_bit
          rjmp  disp_time
          sbrc  r_bit0,dl_num_bit
          rjmp  disp_dl_num
          ldi      zl,low(counter_l)
          ldi      zh,high(counter_l)
          rcall hex_bcd
          mov      disp_bufl,data_bufl
          mov      disp_bufh,data_bufh

          ret
disp_mode:
          ldi      disp_bufh,$90
          ldi      al,$11
          mov      disp_bufl,mode_num
          andi  disp_bufl,$01
          bst      mode_num,1
          bld      disp_bufl,4
          bst      mode_num,2
          bld      disp_bufh,0
          add      disp_bufh,al
          add      disp_bufl,al
          ret
disp_dl_num:
          ldi      disp_bufh,$bc
          mov      disp_bufl,dl_num
          ori      disp_bufl,$d0
          ret
disp_time:
          ldi      zl,low(dl_pre_1l)
          ldi      zh,high(dl_pre_1l)
          mov      al,dl_num
          dec      al
          add      al,al
          add      zl,al
          ldi      al,$00
          adc      zh,al
          rcall hex_bcd
          mov      disp_bufl,data_bufl
          mov      disp_bufh,data_bufh
          ori      disp_bufh,$f0
          sbrc  ring_timer,5
          ret
          ldi      al,1
          cp    data_buf,al
          brne  disp_time1
          andi  disp_bufl,$f0
          ori      disp_bufl,$0d
          ret
disp_time1:  ldi      al,10
          cp    data_buf,al
          brne  disp_time2
          andi  disp_bufl,$0f
          ori      disp_bufl,$d0
          ret
disp_time2:  ldi      disp_bufh,$fd
          ret
hex_bcd:  clr      data_bufl
          clr      data_bufh
          ldi      ah,$08
          mov      data_buf0,ah
          ldd      al,z+1
          rcall hex_bcd_loop
          ldi      ah,$08
          mov      data_buf0,ah
          ld    al,z
          rcall hex_bcd_loop
          ret
         
hex_bcd_loop:
          lsl      al
          adc      data_bufl,data_bufl
          brhs  hex_bcd1
          brlo  hex_bcd2
          ldi      ah,$66            ;h=0 c=0
          add      ah,data_bufl
          brhs  hex_bcd0
          brlo  hex_bcd60
          rjmp  hex_bcd9
hex_bcd0: brlo  hex_bcd66
          rjmp  hex_bcd06
hex_bcd1: brlo  hex_bcd66         ;h=1 c=?
          ldi      ah,$60            ;h=1 c=0
          add      ah,data_bufl
          brlo  hex_bcd66
          rjmp  hex_bcd06
hex_bcd2: ldi      ah,$06            ;h=0 c=1
          add      ah,data_bufl
          brhs  hex_bcd66
          rjmp  hex_bcd60
hex_bcd06:   ldi      ah,$06
          add      data_bufl,ah
          ldi      ah,$60
          add      ah,data_bufl
          brlo  hex_bcd60
          rjmp  hex_bcd9
hex_bcd60:   ldi      ah,$60
          add      data_bufl,ah
          sec   
          rjmp  hex_bcd9
hex_bcd66:   ldi      ah,$66
          add      data_bufl,ah
          sec

使用特权

评论回复
29
cyh642399931|  楼主 | 2010-12-24 09:26 | 只看该作者
hex_bcd9: adc      data_bufh,data_bufh
          brhs  hex_bcdh1
          brlo  hex_bcdh2
          ldi      ah,$66            ;h=0 c=0
          add      ah,data_bufh
          brhs  hex_bcdh0
          brlo  hex_bcdh60
          rjmp  hex_bcdh9
hex_bcdh0:   brlo  hex_bcdh66
          rjmp  hex_bcdh06
hex_bcdh1:   brlo  hex_bcdh66        ;h=1 c=?
          ldi      ah,$60            ;h=1 c=0
          add      ah,data_bufh
          brlo  hex_bcdh66
          rjmp  hex_bcdh06
hex_bcdh2:   ldi      ah,$06            ;h=0 c=1
          add      ah,data_bufh
          brhs  hex_bcdh66
          rjmp  hex_bcdh60
hex_bcdh06:  ldi      ah,$06
          add      data_bufh,ah
          ldi      ah,$60
          add      ah,data_bufh
          brlo  hex_bcdh60
          rjmp  hex_bcdh9
hex_bcdh60:  ldi      ah,$60
          add      data_bufh,ah
          sec
          rjmp  hex_bcdh9
hex_bcdh66:  ldi      ah,$66
          add      data_bufh,ah
          sec
hex_bcdh9:   dec      data_buf0
          ldi      ah,$00
          cpse  ah,data_buf0
          rjmp  hex_bcd_loop
          ret

display:  
          ori      r_portd,$ff
          andi  disp_num,$03
          sbrc  disp_num,0
          rjmp  display_13
display_02:  ldi      zh,high(led02_reg*2)
          ldi      zl,low(led02_reg*2)
          sbrc  disp_num,1
          rjmp  display_2
display_0:   andi  r_portd,$fe    ;portd_bit0(display high_byte)
          mov      al,disp_bufh
          swap  al
          rcall display_4
          bst      r_bit0,working_bit1
          bld      r0,6
display_0c:  in    al,pina
          ldi      zh,high(key0)
          ldi      zl,low(key0)
          ld    ah,z
          lsl      ah
          bst      al,0
          bld      ah,0
          st    z,ah
          cpi      ah,$00
          brne  display0c1
          sbrc  r_key0,0
          rcall key0_deal
          rjmp  display0c2
display0c1:  cpi      ah,$ff
          brne  display0c2
          sbr      r_key0,key0_bit
display0c2:  ldi      zl,low(key1)
          ldi      zh,high(key1)
          ld    ah,z
          lsl      ah
          bst      al,1
          bld      ah,0
          st    z,ah
          cpi      ah,$00
          brne  display0c3
          sbrc  r_key0,1
          rcall key1_deal
          rjmp  display0c4
display0c3:  cpi      ah,$ff
          brne  display0c4
          sbr      r_key0,key1_bit
display0c4:  ldi      zl,low(key2)
          ldi      zh,high(key2)
          ld    ah,z
          lsl      ah
          bst      al,2
          bld      ah,0
          st    z,ah
          cpi      ah,$00
          brne  display0c5
          sbrc  r_key0,2
          rcall key2_deal
          rjmp  display0c6
display0c5:  cpi      ah,$ff
          brne  display0c6
          sbr      r_key0,key2_bit
display0c6:  out      portb,r0
          out      portd,r_portd
          ret
display_2:   andi  r_portd,$fb
          mov      al,disp_bufl
          swap  al
          rcall display_4
          in    al,pina
          ldi      zh,high(key6)
          ldi      zl,low(key6)
          ld    ah,z
          lsl      ah
          bst      al,0
          bld      ah,0
          st    z,ah
          cpi      ah,$00
          brne  display2c1
          sbrc  r_key0,6
          rcall key6_deal
          rjmp  display2c2
display2c1:  cpi      ah,$ff
          brne  display2c2
          sbr      r_key0,key6_bit
display2c2:  ldi      zl,low(key7)
          ldi      zh,high(key7)
          ld    ah,z
          lsl      ah
          bst      al,1
          bld      ah,0
          st    z,ah
          cpi      ah,$00
          brne  display2c3
          sbrc  r_key0,7
          rcall key7_deal
          rjmp  display2c4
display2c3:  cpi      ah,$ff
          brne  display2c4
          sbr      r_key0,key7_bit
display2c4:  ldi      zl,low(key8)
          ldi      zh,high(key8)
          ld    ah,z
          lsl      ah
          bst      al,2
          bld      ah,0
          st    z,ah
          cpi      ah,$00
          brne  display2c5
          sbrc  r_key1,0
          rcall key8_deal
          rjmp  display2c6
display2c5:  cpi      ah,$ff
          brne  display2c6
          sbr      r_key1,key8_bit
display2c6:  out      portb,r0
          out      portd,r_portd
          ret
display_13:  ldi      zh,high(led13_reg*2)
          ldi      zl,low(led13_reg*2)
          sbrc  disp_num,1
          rjmp  display_3
display_1:   andi  r_portd,$fd
          mov      al,disp_bufh
          rcall display_4
          bst      r_bit0,time_bit
          bld      r0,1
          in    al,pina
          ldi      zh,high(key3)
          ldi      zl,low(key3)
          ld    ah,z
          lsl      ah
          bst      al,0
          bld      ah,0
          st    z,ah
          cpi      ah,$00
          brne  display1c1
          sbrc  r_key0,3
          rcall key3_deal
          rjmp  display1c2
display1c1:  cpi      ah,$ff
          brne  display1c2
          sbr      r_key0,key3_bit
display1c2: mov    ah,sw5
          cpi      ah,$00
          brne  display1c21
          sbrc  r_key1,4
          rcall sw5_deal
          rjmp  display1c22
display1c21:cpi    ah,$ff
          brne  display1c22
          sbr      r_key1,sw5_bit
display1c22:ldi    zl,low(key4)
          ldi      zh,high(key4)
          ld    ah,z
          lsl      ah
          bst      al,1
          bld      ah,0
          st    z,ah
          cpi      ah,$00
          brne  display1c3
          sbrc  r_key0,4
          rcall key4_deal
          rjmp  display1c4
display1c3:  cpi      ah,$ff
          brne  display1c4
          sbr      r_key0,key4_bit
display1c4:  ldi      zl,low(key5)
          ldi      zh,high(key5)
          ld    ah,z
          lsl      ah
          bst      al,2
          bld      ah,0
          st    z,ah
          cpi      ah,$00
          brne  display1c5
          sbrc  r_key0,5
          rcall key5_deal
          rjmp  display1c6
display1c5:  cpi      ah,$ff
          brne  display1c6
          sbr      r_key0,key5_bit
display1c6:  out      portb,r0
          out      portd,r_portd
          ret
display_3:   andi  r_portd,$ef
          mov      al,disp_bufl
          rcall display_4
          bst      r_bit0,auto_bit
          bld      r0,1
          in    al,pina
          ldi      zh,high(key9)
          ldi      zl,low(key9)
          ld    ah,z
          lsl      ah
          bst      al,1
          bld      ah,0
          st    z,ah
          ldi      zl,low(dl_5l)
          ldi      zh,high(dl_5l)
          ld    xl,z+
          ld    xh,z
          or    xl,xh
          brne  display_31
          sbrs  r_bit0,working_bit1
          rcall key9_deal

display_31:  ldi      zl,low(keya)
          ldi      zh,high(keya)
          in    al,pina
          ld    ah,z
          lsl      ah
          bst      al,0
          bld      ah,0
          st    z,ah
          cpi      ah,$00
          brne  display3c3
          sbrc  r_key1,2
          rcall keya_deal
          rjmp  display3c4
display3c3:  cpi      ah,$ff
          brne  display3c4
          sbr      r_key1,keya_bit
display3c4:  ldi      zl,low(keyb)
          ldi      zh,high(keyb)  
          ld    ah,z
          lsl      ah
          bst      al,2
          bld      ah,0
          st    z,ah
          cpi      ah,$00
          brne  display3c5
          sbrc  r_key1,3
          rcall keyb_deal
          rjmp  display3c6
display3c5:  cpi      ah,$ff
          brne  display3c6
          sbr      r_key1,keyb_bit
display3c6:  out      portb,r0
          out      portd,r_portd
          ret
display_4:   andi  al,$0f
          add      zl,al
          ldi      al,$00
          adc      zh,al
          lpm
          ret
         
               
led02_reg:   .db      $b7,$a0,$3b,$ba,$ac,$9e,$9f,$b0,$bf,$bc,$3d,$ab,$07,$08,$00,$00
led13_reg:   .db      $ed,$05,$dc,$5d,$35,$79,$f9,$0d,$fd,$3d,$bc,$d5,$e0,$10,$00,$00

tim0_ovf: push  al
          push  ah
          in    al,sreg
          push  al
          push  zl
          push  zh
          ldi      al,$ff      ;(4mhz)250us*2=0.5ms
          out      tcnt0,al
          ldi      al,$ff
          out      porta,al
          in    al,pina
          lsl      sw2
          bst      al,4
          bld      sw2,0
          lsl      sw3
          bst      al,3
          bld      sw3,0
          ldi      al,$03
          and      sw3,al
          in    al,pind
          lsl      sw1
          bst      al,7
          bld      sw1,0
          lsl      sw5
          bst      al,6
          bld      sw5,0
          lsl      sw4
          bst      al,5
          bld      sw4,0

          ldi      al,$07
          and   timer_n,al
          inc      timer_n
          cp    timer_n,al
          brne  tim0_next4
          ldi      al,$06         ;0.5*5=2.5ms
          mov      timer_n,al

          cpi      disp_num,$03
          brne  tim0_next
y5_clr:      cbi      portc,y2
          rcall delay_deal     ;2.5*4=10ms
          rjmp  tim0_next3
tim0_next:   cpi      disp_num,$02
          brne  tim0_next1
          rcall disp_setup
          rjmp  tim0_next3
tim0_next1:  cpi      disp_num,$01
          brne  tim0_next2
          sbrc  r_bit0,time_bit
          rjmp  tim0_next3
          sbrs  r_bit0,5
          rjmp  tim0_next3
          cbr      r_bit0,$20
          rcall eeprom_w
          rjmp  tim0_next3
tim0_next2:  
          ;rcall   eeprom_r
tim0_next3:  rcall display
          inc      disp_num
tim0_next4: pop    zh
          pop      zl
          pop      al
          out      sreg,al
          pop      ah
          pop      al
          reti
eeprom_r: ldi      zh,high(dl_pre_1l)
          ldi      zl,low(dl_pre_1l)
          ldi      ah,$00
          ldi      al,$00
          out      eearh,al
          out      eearl,al
eeprom_r_loop:
          in    al,eecr
          sbrc  al,eewe
          rjmp  eeprom_r_loop
          sbi      eecr,eere
          nop
          nop
          in    al,eedr
          st    z+,al
          inc      ah
          out      eearl,ah
          cpi      ah,13
          brne  eeprom_r_loop
          ld    al,-z
          mov      mode_num,al
          ret

eeprom_w: ldi      al,$00
          out      eearh,al
          mov      al,dl_num
          dec      al
          add      al,al
          out      eearl,al
          ldi      zh,high(dl_pre_1l)
          ldi      zl,low(dl_pre_1l)
          add      zl,al
          ldi      al,$00
          adc      zh,al
eeprom_w_loop:
          in    al,eecr
          sbrc  al,eewe
          rjmp  eeprom_w_loop
          ld    al,z+
          out      eedr,al
          sbi      eecr,eemwe
          sbi      eecr,eewe
eeprom_w_loop1:
          in    al,eecr
          sbrc  al,eewe
          rjmp  eeprom_w_loop1
          in    al,eearl
          inc      al
          out      eearl,al
          ld    al,z
          out      eedr,al
          sbi      eecr,eemwe
          sbi      eecr,eewe
          ret
delay_deal:  
          dec      ring_timer
          mov      al,ring_timer
          cpi      al,230
          brne  delay_deal1
          cbi      portc,speaker
delay_deal1:cpi    al,0
          brne  delay_deal2
          cbr      r_bit0,$04
delay_deal2:ldi    zh,$00
          ldi      zl,dl_1l
          rcall delay_deal3
          rcall delay_deal3
          rcall delay_deal3
          rcall delay_deal3
          rcall delay_deal3
          rcall delay_deal3
          ret
delay_deal3:ld     al,z
          ldd      ah,z+1
          cpse  al,ah
          rjmp  delay_deal4
          cpi      al,$00
          breq  delay_deal5
delay_deal4:sbiw   al,$01
          st    z,al
          std      z+1,ah
delay_deal5:adiw   zl,$02
          ret
key0_deal:   cbr      r_key0,key0_bit
          rcall ring_setup
stop_start:  cbr      r_bit0,$04
          sbrc  r_bit0,working_bit1
          rjmp  stop_deal
          ldi      al,$40            ;stop/start
          eor      r_bit0,al
          sbr      r_bit0,$01
          clr      step_num
          ret
stop_deal:   ldi      al,$41
          eor      r_bit0,al
          clr      step_num
          ret                                 
key1_deal:   cbr      r_key0,key1_bit
          rcall ring_setup
          ldi      al,$02            ;auto/1cycle
          eor      r_bit0,al
          ret

key2_deal:   cbr      r_key0,key2_bit      ;add_key +
          rcall ring_setup
          sbrc  r_bit0,mode_bit
          rjmp  key2_mode
          sbrc  r_bit0,time_bit
          rjmp  key2_time
          sbrc  r_bit0,dl_num_bit
          rjmp  key2_dl_num
          ldi      zl,low(counter_l)
          ldi      zh,high(counter_l)
          ldi      al,$00
          st    z+,al
          st    z,al
key2_ret: ret
key2_mode:   ldi      al,7
          cpse  mode_num,al
          rjmp  key2_mode1
          ret
key2_mode1:  inc      mode_num
          cp    mode_num,al
          brsh  key2_mode2
          rjmp  key2_mode3
key2_mode2:  mov      mode_num,al
key2_mode3:  ldi      al,12
          out      eearl,al
          ldi      al,0
          out      eearh,al
          out      eedr,mode_num
key2_mode4:
          in    al,eecr
          sbrc  al,eewe
          rjmp  key2_mode4
          sbi      eecr,eemwe
          sbi      eecr,eewe
          ret
key2_dl_num:
          inc      dl_num
          ldi      al,6
          cp    dl_num,al
          brsh  key2_dl_num1
          ret
key2_dl_num1:cbr   r_bit0,$08
          mov      dl_num,al
          ret
key2_time:   sbr      r_bit0,$20
          ldi      zl,low(dl_pre_1l)
          ldi      zh,high(dl_pre_1l)
          mov      al,dl_num
          dec      al
          add      al,al
          add      zl,al
          ldi      al,$00
          adc      zh,al
          ld    al,z
          ldd      ah,z+1
          add      al,data_buf
          st    z,al
          ldi      al,0
          adc      ah,al
          std      z+1,ah
          ld    al,z
          ldi      ah,25
          add      al,ah
          ldd      al,z+1
          ldi      ah,252
          adc      al,ah
          brcs  key2_time1
          ret         
key2_time1:  ldi      al,231
          ldi      ah,03
          st    z,al
          std      z+1,ah
          ret
key3_deal:   cbr      r_key0,key3_bit
          ret
SW5_DEAL: cbr      r_key1,sw5_bit
          rcall ring_setup
          rjmp  stop_start
key4_deal:   cbr      r_key0,key4_bit
          rcall ring_setup
          rjmp  stop_start
key5_deal:   cbr      r_key0,key5_bit
          ret
key6_deal:   cbr      r_key0,key6_bit
          sbrc  r_bit0,working_bit1
          ret
          rcall ring_setup
          in    al,portc
          ldi      ah,$12
          eor      al,ah          ;y5   shuttle
          out      portc,al
          sbr      r_bit0,$01
          ret
key7_deal:   cbr      r_key0,key7_bit
          sbrc  r_bit0,working_bit1
          ret
          rcall ring_setup
          in    al,portc
          ldi      ah,$04
          eor      al,ah          ;y4 working_table
          out      portc,al
          sbr      r_bit0,$01
          ret
key8_deal:   cbr      r_key1,key8_bit      ;sub_key -
          rcall ring_setup
          sbrc  r_bit0,mode_bit
          rjmp  key8_mode
          sbrc  r_bit0,time_bit
          rjmp  key8_time
          sbrc  r_bit0,dl_num_bit
          rjmp  key8_dl_num
          ldi      zl,low(counter_l)
          ldi      zh,high(counter_l)
          ld    al,z+
          ld    ah,z
          or    ah,al
          breq  key8_ret
          ld    ah,z
          sbiw  al,$01
          st    z,ah
          st    -z,al
key8_ret: ret
key8_mode:   ldi      al,0
          cp    mode_num,al
          breq  key8_mode1
          dec      mode_num
          rcall key2_mode3
key8_mode1:  ret
key8_dl_num:ldi    al,1
          cp    dl_num,al
          breq  key8_dl_num1
          dec      dl_num
          ret
key8_dl_num1:cbr   r_bit0,$08
          ret
key8_time:   sbr      r_bit0,$20
          ldi      zl,low(dl_pre_1l)
          ldi      zh,high(dl_pre_1l)
          mov      al,dl_num
          dec      al
          add      al,al
          add      zl,al
          ldi      al,$00
          adc      zh,al
          ld    al,z
          ldd      ah,z+1
          sub      al,data_buf
          st    z,al
          ldi      al,0
          sbc      ah,al
          std      z+1,ah
          ld    al,z
          ldi      ah,25
          add      al,ah
          ldd      al,z+1
          ldi      ah,252
          adc      al,ah
          brcs  key8_time1
          ret         
key8_time1:  ldi      al,00
          ldi      ah,00
          st    z,al
          std      z+1,ah
          ret

key9_deal:                     ;motor1
          cpi      ah,$00
          brne  key9_deal1
          in    al,portc
          ori      al,$20
          out      portc,al
          sbrc  r_key1,1
          rjmp  key9_deal2
          ret
key9_deal1:  cpi      ah,$ff
          brne  key9_deal3
          in    ah,portc
          andi  ah,$df
          out      portc,ah
          sbrc  r_key1,1
          ret
          cbr      r_bit0,$40
          rcall ring_setup
          sbr      r_key1,key9_bit
          ret
key9_deal2:  cbr      r_key1,key9_bit
          cbr      r_bit0,$40
          rcall ring_setup
key9_deal3:  ret

keya_deal:   cbr      r_key1,keya_bit
          sbrc  r_bit0,working_bit1
          ret
          rcall ring_setup
          in    al,portc
          ldi      ah,$01
          eor      al,ah          ;y6 test_stamp
          out      portc,al
          sbr      r_bit0,$01
          ret
keyb_deal:   cbr      r_key1,keyb_bit      ;set_key
          rcall ring_setup
          sbrc  r_bit0,mode_bit
          ret
          sbrc  r_bit0,dl_num_bit
          rjmp  keyb_deal1
          sbr      r_bit0,$08
          ldi      al,$01
          mov      dl_num,al
          ret
keyb_deal1:  sbrc  r_bit0,time_bit
          rjmp  keyb_deal2
          sbr      r_bit0,$10
          ldi      data_buf,100
          ret
keyb_deal2:  cpi      data_buf,100
          brne  keyb_deal3
          ldi      data_buf,10
          ret
keyb_deal3:  cpi      data_buf,10
          brne  keyb_deal4
          ldi      data_buf,1
          ret
keyb_deal4:  cbr      r_bit0,$10
          ret
ring_setup:  sbi      portc,speaker
          ldi      al,250
          mov      ring_timer,al
          ret
谁看得懂以上程序啊?

使用特权

评论回复
30
tyw| | 2010-12-24 11:18 | 只看该作者
无字天书哦.哈哈

使用特权

评论回复
31
yewuyi| | 2010-12-24 11:29 | 只看该作者
老T把箱底都扒出来了啊。

使用特权

评论回复
32
cyh642399931|  楼主 | 2010-12-24 12:02 | 只看该作者
晕死啊!!用AVR汇编写的,控制的是电机,没一点注释,不过我看不懂啊??

使用特权

评论回复
33
cyh642399931|  楼主 | 2010-12-24 12:03 | 只看该作者
貌似还有PLC

使用特权

评论回复
34
cyh642399931|  楼主 | 2010-12-24 12:06 | 只看该作者
T叔有AVR方面的书吗?

使用特权

评论回复
35
tyw| | 2010-12-24 12:19 | 只看该作者
本帖最后由 tyw 于 2010-12-24 13:13 编辑

逐句啃,弄清动作意思,补写注释,当你全部写完,也就明白了.
95年俺啃了一个32k长的Z80汇编写的**游戏程序,写的注释比程序多好几倍,写完后Z80也玩精了.
TR2A.ASM (309.56 KB)    有兴趣可打开看看连台湾老板也叫好的东东"象看小说一样"





ARM初学者入门手册 45页 1.3M PDF版.rar (1.22 MB)
ARM与嵌入式技术 247页 11.6M.part1.rar (4.88 MB)
ARM与嵌入式技术 247页 11.6M.part2.rar (4.88 MB)
ARM与嵌入式技术 247页 11.6M.part3.rar (1018.19 KB)
AVR高速嵌入式单片机原理与应用 454页 9.8M.part1.rar (4.88 MB)
AVR高速嵌入式单片机原理与应用 454页 9.8M.part2.rar (4.01 MB)
基于ARM的嵌入式系统教学与科研应用 108页 3.1M PDF版.rar (2.96 MB)
基于单片机8051的嵌入式开发指南 309页 7.2M.part1.rar (4.88 MB)
基于单片机8051的嵌入式开发指南 309页 7.2M.part2.rar (1.59 MB)
嵌入式处理器原理及应用 Nios系统设计和C语言编程 294页 17.9M.part1.rar (4.88 MB)
嵌入式处理器原理及应用 Nios系统设计和C语言编程 294页 17.9M.part2.rar (4.88 MB)
嵌入式处理器原理及应用 Nios系统设计和C语言编程 294页 17.9M.part3.rar (4.88 MB)
嵌入式处理器原理及应用 Nios系统设计和C语言编程 294页 17.9M.part4.rar (2.57 MB)
嵌入式软件基础:C语言与汇编的融合 246页 31.1M.part1.rar (4.88 MB)
嵌入式软件基础:C语言与汇编的融合 246页 31.1M.part2.rar (4.88 MB)
嵌入式软件基础:C语言与汇编的融合 246页 31.1M.part3.rar (4.88 MB)
嵌入式软件基础:C语言与汇编的融合 246页 31.1M.part4.rar (4.88 MB)
嵌入式软件基础:C语言与汇编的融合 246页 31.1M.part5.rar (4.88 MB)
嵌入式软件基础:C语言与汇编的融合 246页 31.1M.part6.rar (2.3 MB)
嵌入式实时操作系统 邵贝贝 604页 45.6M.part01.rar (4.88 MB)
嵌入式实时操作系统 邵贝贝 604页 45.6M.part02.rar (4.88 MB)
嵌入式实时操作系统 邵贝贝 604页 45.6M.part03.rar (4.88 MB)
嵌入式实时操作系统 邵贝贝 604页 45.6M.part04.rar (4.88 MB)
嵌入式实时操作系统 邵贝贝 604页 45.6M.part05.rar (4.88 MB)
嵌入式实时操作系统 邵贝贝 604页 45.6M.part06.rar (4.88 MB)
嵌入式实时操作系统 邵贝贝 604页 45.6M.part07.rar (4.88 MB)
嵌入式实时操作系统 邵贝贝 604页 45.6M.part08.rar (4.88 MB)
嵌入式实时操作系统 邵贝贝 604页 45.6M.part09.rar (1.23 MB)
嵌入式微处理器模拟接口设计(第二版)323页 7.5M.part1.rar (4.88 MB)
嵌入式微处理器模拟接口设计(第二版)323页 7.5M.part2.rar (2.07 MB)
嵌入式微处理器系统设计实例 397页 11.6M 书签.part1.rar (4.88 MB)
嵌入式微处理器系统设计实例 397页 11.6M 书签.part2.rar (4.88 MB)
嵌入式微处理器系统设计实例 397页 11.6M 书签.part3.rar (1.03 MB)
嵌入式微控制器用户指南 374页 6.7M.part1.rar (4.88 MB)
嵌入式微控制器用户指南 374页 6.7M.part2.rar (1.13 MB)
嵌入式系统开发圣经 326页 45.0M.part01.rar (4.88 MB)
嵌入式系统开发圣经 326页 45.0M.part02.rar (4.88 MB)
嵌入式系统开发圣经 326页 45.0M.part03.rar (4.88 MB)
嵌入式系统开发圣经 326页 45.0M.part04.rar (4.88 MB)
嵌入式系统开发圣经 326页 45.0M.part05.rar (4.88 MB)
嵌入式系统开发圣经 326页 45.0M.part06.rar (4.88 MB)
嵌入式系统开发圣经 326页 45.0M.part07.rar (4.88 MB)
嵌入式系统开发圣经 326页 45.0M.part08.rar (4.88 MB)
嵌入式系统开发圣经 326页 45.0M.part09.rar (3.43 MB)
嵌入式系统设计师教程 8篇 7.2M.rar (2.51 MB)
嵌入式系统设计与实例开发 272页 13.0M.part1.rar (4.88 MB)
嵌入式系统设计与实例开发 272页 13.0M.part2.rar (4.88 MB)
嵌入式系统设计与实例开发 272页 13.0M.part3.rar (2.88 MB)
嵌入式系统硬件设计 329页 17.2M.part1.rar (4.88 MB)
嵌入式系统硬件设计 329页 17.2M.part2.rar (4.88 MB)
嵌入式系统硬件设计 329页 17.2M.part3.rar (4.88 MB)
嵌入式系统硬件设计 329页 17.2M.part4.rar (1.14 MB)
嵌入式硬件系统设计与应用实例 319页 10.5M.part1.rar (4.88 MB)
嵌入式硬件系统设计与应用实例 319页 10.5M.part2.rar (4.88 MB)
嵌入式硬件系统设计与应用实例 319页 10.5M.part3.rar (162.08 KB)
时间触发嵌入式 8051系列微控制器应用 783页 26.8M.part1.rar (4.88 MB)
时间触发嵌入式 8051系列微控制器应用 783页 26.8M.part2.rar (4.88 MB)
时间触发嵌入式 8051系列微控制器应用 783页 26.8M.part3.rar (4.88 MB)
时间触发嵌入式 8051系列微控制器应用 783页 26.8M.part4.rar (4.88 MB)
时间触发嵌入式 8051系列微控制器应用 783页 26.8M.part5.rar (4.88 MB)
时间触发嵌入式 8051系列微控制器应用 783页 26.8M.part6.rar (224.65 KB)
嵌入式实时操作系统uCOS-II(中文版) 347页 4.3M.rar (1.84 MB)

使用特权

评论回复
36
cyh642399931|  楼主 | 2010-12-24 12:21 | 只看该作者
??AVR哦 不是ARM 不过还是收藏了……嘿嘿

使用特权

评论回复
37
tyw| | 2010-12-24 13:01 | 只看该作者
38
cyh642399931|  楼主 | 2010-12-24 13:03 | 只看该作者
哦哦  谢谢  嘻嘻

使用特权

评论回复
39
一心爱你| | 2010-12-31 17:29 | 只看该作者
对老T 只有佩服

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则