导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→哪位用过430,请帮帮忙[sunnyjaky]

 *第22132篇: 哪位用过430,请帮帮忙

  
楼 主:sunnyjaky 2004年5月20日17:11
 哪位用过430,请帮帮忙
小弟对下面的程序搞了两天了,就是不知道他的问题出在哪???
  小弟用的是MSP430F149片子,IAR仿真
问题就是出在,响应中断后进入键盘设置程序输入密码时,第一位正长显示,第二位,就显示不出来,还退出中断.
小弟不知道怎么做了  请大虾们帮帮小弟!!!!!!
小弟在此先谢过了

;------------------------------------------------------------------------------
main        ORG     01600h                    ; Program Start
;------------------------------------------------------------------------------
RESET       mov #0A00h,SP                     ; Initialize stackpointer
StopWDT     mov #WDTPW+WDTHOLD,&WDTCTL        ; Stop watchdog
            call #init_xt2                    ;初始化xt2,XT2=mclk=smclk
            call #init_ram                    ;清RAM
;初始化定时器A  显示
            mov.w #TASSEL1+TACLR+MC0,&TACTL   ; ACLK, clear TAR
            mov.w #CCIE,&TACCTL0              ; CCR0 interrupt enabled
            mov.w #3200,&TACCR0
;初始化端口
SetupP1     bis.b #0f8h,&P1DIR                ; 键盘,高5位输出,低3位输入
            bis.b #0c0h,&P2DIR                ; 分合输出
            bis.b #0c0h,&P2OUT
            bis.b #1fh,&P3DIR                 ; 4个指示灯及收发控制
            bis.b #07h,&P3OUT
            bis.b #BIT6+BIT7,&P3SEL           ; 串口
            bis.b #0ffh,&P4DIR                ; 液晶数据线
            bis.b #0ffh,&P4OUT
            bis.b #0F0h,&P5DIR                ; 液晶控制及I2c
            bis.b #0f0h,&P5OUT
            call #xscs
            eint                              ; Enable interrupts
mainloop    nop
            jmp mainloop
            
yans5       cmp #6,r6
            jhs yans52
            inc r6
yans53      mov.b #00h,cs1
            ret
yans52      clr r6
            mov.b #01h,cs1
            ret
;------------------------------------------------------------------------------ 
key1;       行扫描
;------------------------------------------------------------------------------ 
            mov.b &P1IN,al
            ;mov.b al,R5
            and.b #07h,al
            cmp.b #06h,al
            jne qw1
            mov.b #01h,ch
            call #key2
            jmp qwf
qw1         cmp.b #05h,al
            jne qw2
            mov.b #02h,ch
            call #key2
            add.b #05h,jx
            jmp qwf
qw2         cmp.b #03h,al
            jne qwf
            mov.b #04h,ch
            call #key2
            add.b #10h,jx
qwf         ret

;------------------------------------------------------------------------------ 
key2;    列扫描
;------------------------------------------------------------------------------ 
            clr jx
            clr.b cl
            mov.b #08h,bh
qe2         bis.b #0f8h,xl
            mov.b bh,bl
            xor.b #0ffh,bl
            and.b bl,xl
            mov.b xl,&P1OUT
            mov.b &P1IN,al
            and.b ch,al
            cmp.b #00h,al
            jne qe1
            mov.b cl,jx
            jmp qef
qe1         inc.b cl
            rla.b bh
            cmp.b #06h,cl
            jlo qe2
qef         ret

;------------------------------------------------------------------------------ 
TA0_ISR     dint       ; 定时器中断程序
           cmp.b #01h,qs2
            jeq ycu1
           bic.b #BIT3+BIT4+BIT5+BIT6+BIT7,&P1OUT
            mov.b &P1IN,dll
            bic.b #BIT3+BIT4+BIT5+BIT6+BIT7,dll
            cmp.b #07h,dll
            jeq ycu1
            call #keys    ;有按键按下
kef1        mov.b #01h,qs2
            jmp keee
ycu1        clr.b qs2
            bit.b #01h,cs3
            jz keef
            jmp keee
keef        mov.b #080h,yl    ;显示主界面
            call #dizhi
            mov.b #08h,yl
            call #suju1
            mov.b #08h,yl
            call #suju1
            mov.b #08h,yl
            call #suju1
keee        eint
            reti
            
keys        push r5       ;键盘操作
              push ax
     push bx
     push dx
     clr r5
     bic.b #04h,&P3OUT
            bic.b #02h,&P3OUT
            bis.b #01h,cs3
            call #key1             ;键盘扫描
            cmp.b #08h,cs1
            jhs ke3 
            mov.b #01h,cs1
            cmp.b #03h,cs1
            jhs ke1
            cmp.b #01h,cs1
            jne uio2
            cmp.b #01h,jx 
            jne ke2
            call #xsi1             ;键盘设置界面
uio21       mov.b #0c5h,yl  ;输入密码
     call #dizhi
            mov.b jx,yl
            call #suju1
            mov.b #02h,cs1
            br #kef
uio2        cmp.b #02h,cs1
            jne ke2
            cmp.b #01h,jx
            jne ke2
            mov.b #0c6h,yl
            call #dizhi
            mov.b jx,yl
            call #suju1
            mov.b #03h,cs1
k22         br #kef
ke2         br #kee
ke1         cmp.b #04h,cs1
            jhs ke3
            cmp.b #05h,jx
            jne ke2
            mov.b #0c7h,yl
            call #dizhi
            mov.b jx,yl
            call #suju1
            mov.b #04h,cs1
            clr.b cs9
            clr.b csa
            br #kef
ke3         mov.b #08h,cs1
            cmp.b #00h,cs9
            jeq ke5
            jmp keb
ke5         cmp.b #01h,csa
            jeq ke6        
            cmp.b #11h,jx                  
            jeq ke7             ;是功能键则进入设置界面
            br #kef
ke7         mov.b #01h,csa                 ;csa function sign
            call #xsi1
            clr.b cs9           
            br #kef
ke6         cmp.b #12h,jx
            jeq kea                          ;第一次确认键后输入的数据送到QS3中
            cmp.b #00h,qs3                   ;two times data input sign
            jne kea1
            cmp.b #11h,jx
            jeq kea3
            cmp.b #10h,jx
            jeq kea3          ;是功能键或小数点键则返回
            mov jx,ix
            mov.b jx,yl
            mov.b #85h,yl
     call #dizhi
            mov.b jx,yl
            call #suju1
            mov.b #01h,qs3
kea3        br #kef
kea1        cmp.b #01h,qs3
            jne kea2
            cmp.b #11h,jx
            jeq kea4
            cmp.b #10h,jx
            jeq kea4
            mov.b #02h,qs3
            rla ix
            rla ix
            rla ix
            rla ix
            add jx,ix
            mov.b jx,yl
            call #suju1
kea4        br #kef
kea2        clr.b qs3
            mov.b #85h,yl            ;进入具体设置项
     call #dizhi
     mov.b #20h,yl
     call #suju
     call #suju
            br #kef
kea         mov.b il,cs9
            br #kef
keb         cmp.b #01h,cs9    ;close
            jne kk1
     br #kef  ;11
kk1         cmp.b #02h,cs9   ;open
            jne kk2
     br #kef  ;21
kk2         cmp.b #03h,cs9   ;t1
            jne kec
            br #kef  ;31
kec         cmp.b #04h,cs9   ;t2 
            jne ked
            br #kef  ;41
ked         cmp.b #05h,cs9   ;t3
            jne keg
            br #kef  ;51
keg         cmp.b #06h,cs9   ;n(1-20)
            jne keh
            br #kef  ;61
keh         cmp.b #07h,cs9   ;n(1-3)
            jne kei
            br #kef  ;71
kei         cmp.b #08h,cs9  ;td
            jne kej
            br #kef  ;81
kej         cmp.b #09h,cs9   ;gd1
            jne kek
            br #kef  ;91
kek         cmp.b #10h,cs9   ;gd2
            jne kexdl
            br #kef  ;seta1
kexdl       cmp.b #11h,cs9    ;小电流
            jne keday
     br #kef  ;111
keday     cmp.b #12h,cs9    ;YY-MM-DD
     jne ketime
     br #kef  ;121
ketime     cmp.b #13h,cs9    ;HH-MM-SS
     jne kegzd
     br #kef  ;131
kegzd       cmp.b #14h,cs9    ;合闸到故障点
            jne kexssd
     br #kef  ;141
kexssd      cmp.b #15h,cs9    ;限时速断
            jne ke16
     br #kef  ;151
ke16        cmp.b #16h,cs9    ;单侧加压延时合闸时间
            jne ke17
     br #kef  ;161
ke17        cmp.b #17h,cs9    ;失压分闸时间
            jne ke18
     br #kef  ;171
ke18        cmp.b #18h,cs9    ;电源侧设置00 01 10 11
            jne ke19
     br #kef  ;181
ke19        cmp.b #19h,cs9    ;重合后加速投切
            jne ke20
     br #kef  ;191
ke20        cmp.b #20h,cs9    ;故障脉冲监测投切
            jne kea21
     br #kef  ;201
kea21        cmp.b #21h,cs9    ;子站号
            jne ke22
     br #kef  ;211
ke22        cmp.b #22h,cs9    ;波特率
            jne ke23
     br #kef  ;221
ke23        cmp.b #23h,cs9    ;显示故障记录
            jne ke25
     br #kef  ;231
ke25        cmp.b #25h,cs9    ;环网投切
            jne ke26
     br #kef  ;251
ke26        cmp.b #26h,cs9   ;关机设置
            jne ke35
     br #kef  ;261
ke35        cmp.b #35h,cs9    ;生产日期
            jne kel
     br #kef  ;351
kel         cmp.b #55h,cs9    ;55,66,77,88,99退出
            jne keu
            jmp kez
keu         cmp.b #66h,cs9
            jne kev
            jmp kez
kev         cmp.b #77h,cs9
            jne kew
            jmp kez
kew         cmp.b #88h,cs9
            jne kex
            jmp kez
kex         cmp.b #99h,cs9
            jeq kez
            br #kef
kez         br #kee

kee         clr.b cs1
            clr r5
            clr.b cs3
            clr.b cs4
            clr.b cs5
            clr.b cs6
            clr.b cs9
            clr.b csa
            clr ix
            clr hx
            call #qping
            bis.b #04h,&P3OUT
            bis.b #02h,&P3OUT
            jmp kef
kec1        call #xsi1
            clr.b qs3
            clr.b csa
            clr.b cs4
            clr.b cs5
            clr.b cs6
            clr.b cs9
            clr ix
            clr hx
kef         pop dx
            pop bx
            pop ax
            pop r5
            ret

  
2楼:sunnyjaky 2004年5月22日09:15
 no body want to tell me!

>>>>>>对该主题发表你的看法

本主题贴数2,分页: [第1页]


[上一篇主题]:哪位用过ad的片子或是对keil比较熟悉?

[下一篇主题]:ucos-ii + code banking