查看: 2041|回复: 6

[提问] 请高手帮忙看一段汇编程序(定时器中断) [复制链接]

hongsheng13 (离线)
积分
1701
帖子
37
发表于 2011-7-8 17:14:22 |显示全部楼层
这是一段我程序中的汇编语言,我想把它改成C语言,但是一直没有调试出正确的结果,希望高手指点一下!谢谢了!
TIME0:         PUSH PSW                         ;定时器0中断程序
                    DJNZ R4,TIME0E
                    PUSH ACC
                    MOV A,#00H
                    MOVC A,@A+DPTR
                    CJNE A,#00H,TIM01      
                    CLR 7EH
                    CLR 7BH
                    ANL P2,#0FH            
                    CLR TR0
                    CLR ET0
TIME0E2:     POP ACC
TIME0E:      POP PSW
                    RETI        
                    ;
TIM01:         INC DPTR
                    MOV R4,A
                    CJNE A,#0FFH,TIM01A
                    CPL 7BH
TIM01A:       CPL 7BH
                    JB 7BH,TIM02
                    ANL P2,#0FH         
                    POP ACC
                    POP PSW
                    RETI
                    ;
TIM02:         MOV A,R2
                    ORL P2,A               
                    POP ACC
                    POP PSW
                    RETI


         
REM:          NOP
                    JB 7EH,REM
                    MOV A,#00H
                    MOVC A,@A+DPTR
                    CJNE A,#00H,REME       ;IF 00H THEN END CODE
                    RET
REME:         MOV R4,A
                    INC DPTR
                    SETB 7EH               ;SET FLAGE OF DRIVE TIME0
                    SETB 7BH               ;SET FLAGE OF SEND 1 REMOTE LED
                    MOV A,R3
                    MOV R2,A
                    ORL P2,A              
                    SETB ET0
                    SETB TR0
                    RET
下面是我自己用C语言写的:
void time0int() interrupt 1
{
         shuzu--;
   if(shuzu==0)
    {
        while(*p!=0x00)
        {
            p++;
            shuzu=*p;
            while(*p!=0xff)
            {
                flag0=~flag0;
                if(flag0==1)
                {
                    P2=P2|waishe;
                }
                else
                {
                    P2=P2&0x0f;
                }
            }

            flag0=~flag0;
        }
        flag0=0;
        flag1=0;
        P2=P2&0x0f;
        TR0=0;
        ET0=0;
    }
}

void sendcode(void)
{
    while(flag1)
         {;}
    while(*p!=0x00)
    {
        p++;
                   shuzu=*p;
        flag0=1;
        flag1=1;
        P2=P2|waishe;
        ET0=1;
        TR0=1;
    }
}
McuPlayer (离线)
积分
75075
帖子
4009
发表于 2011-7-18 17:56:11 |显示全部楼层
没看别人程序的习惯
我们的口号是:“不跑气,不放气”
博客:http://www.mcuplayer.com
hongsheng13 (离线)
积分
1701
帖子
37
发表于 2011-7-21 17:26:17 |显示全部楼层
好失望啊
vvjjii (离线)
积分
1491
帖子
42
发表于 2011-8-26 08:18:23 |显示全部楼层
43834285 (离线)
积分
43
帖子
5
发表于 2011-10-9 21:32:18 |显示全部楼层
天子 (离线)
积分
0
帖子
9
发表于 2011-10-10 16:54:57 |显示全部楼层
太费神了呵呵,新手
uacom (离线)
积分
101
帖子
19
发表于 2011-10-19 14:12:49 |显示全部楼层
请不要用其他语言改写另外一种语言。这样会变味的,就比方你的家乡话改为普通话意思及语感就不会一样。
您需要登录后才可以发表评论 登录 | 立即注册

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
回顶部