No.55010 作者:sunnyjaky 邮件:yyb-039@etang.com ID:19693 登陆:3次 文章数:23篇 最后登陆IP:218.12.56.121 最后登陆:2005/9/3 15:49:47 注册:2004/3/30 10:03:47 财富:186 发帖时间:2004/5/20 17:11:17 发贴者IP:218.12.56.78 标题:sunnyjaky:哪位用过430,请帮帮忙 摘要:No.55010哪位用过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 ......
>>返回讨论的主题
|