打印

c与汇编的使用 求助

[复制链接]
1520|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sean139453|  楼主 | 2008-10-19 11:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请帮忙看下  c和汇编的连接



#include <reg51.h>
#define uchar unsigned char
#define unit unsigned int
#define ulong unsigned long

extern void cs_t(void);
extern void delay(uint);
extern void display(uchar *);
data uchar testok;



void main (void)
{
data uchar dispram[5];
data int  i;
data ulong time;
P0=0xff;
P2=0xff;
TMOD=0x11;
IE=0x80;
while (1)
{
 cs_t();
 delay(1);
testok=0;
EX0=1;
ET0=1;
while(! testok) display(dispram);
if (1==testok)
   {
   time=TH0;
   time=(time<<8)| TL0;
   time*=172;
   time/=10000;
  dispram[0]=(uchar) (time%10);
   time/=10;
   dispram[1]=(uchar) (time%10);
   time/=10;
   dispram[2]=(uchar) (time%10);
   dispram[3]=(uchar) (time/10);
  if (0 == dispram[3]) dispram[3]= 17;
   } else
   {
   dispram [0]=16;
   dispram [1]=16;
   dispram [2]=16;
   dispram [3]=16;
   }
 for (i=0;i<300;i++) display(dispram);
 }
}



void cs_t(void) interrupt 0
{
 TR0=0;
 ET0=0;
 EX0=0;
testok=1;
}



void cs_r(void) interrupt 1
{
 EX0=0;
 TR0=0;
 ET0=0;
 testok=2;
 }  




                  NAME CS_T 
?PR?CS_T?CS_T         SEGMENT   CODE
                     PUBLIC   CS_T
                RSEG     ?PR?CS_T?CS_T
CS_T:                PUSH      ACC
                     MOV       TH0, #02H
                     MOV       TL0, #18H
                     MOV       A, #4D
                     SETB       TR0
CS_T1:               CPL        p1.0
                     NOP
             NOP
             NOP
                     NOP
                     NOP
                     NOP
                     NOP
                     NOP
                     NOP
                     NOP
                     DJNZ       ACC,CS_T1
                     POP        ACC
                     RET
                     END
 NAME   DELAY
?PR?_DELAY?DELAY   SEGMENT   CODE
PUBLIC   _DELAY
 RSEG    ?PR?_DELAY?DELAY
_DELAY:    PUSH   ACC
           MOV A,R7
           JZ   DELA1
           INC   R6
DELA1:   MOV   R5,#50D
         DJNZ   R5, $
         DJNZ   R7,DELA1
         DJNZ    R6,DELA1
            POP   ACC
           RET
END
    NAME  DISPLAY
?PR?_DISPLAY?DISPLAY   SEGMENT  CODE
?CO?_DISPLAY?DISPLAY    SEGMENT  DATA
                        EXTRN    CODE    (_DELAY)
                        PUBLIC    _DISPLAY
                        RSEG    ?CO?_DISPLAY?DISPLAY
?_DISPLAY?BYTE:
DISPBIT:   DS  1
DISPNUM:   DS  1
           RSEG    ?PR?_DISPLAY?DISPLAY
_DISPLAY:  PUSH ACC
           PUSH  DPH
           PUSH  DPL
          PUSH  PSW
           INC   DISPNUM
            MOV A,DISPNUM
           CJNE  A,#4D,DISP1
DISP1:    JC  DISP2
           MOV  DISPNUM,#00H
           MOV  DISPBIT,#0FEH
DISP2:     MOV  A,R1
           ADD   A,DISPNUM
           MOV  R0,A
           MOV  A,@R0
           MOV  DPTR,#DISPTABLE
           MOVC   A,@A+DPTR
           MOV P0,A
           MOV A,DISPNUM
           CJNE  A,#2D,DISP3
           CLR   P0.7
DISP3:       MOV P2,DISPBIT
             MOV R5,#00H
             MOV  R7,#0AH
             LCALL  _DELAY
             MOV P0,#0FFH
             MOV  P2,#0FFH
             MOV A,DISPBIT
             RL   A
              MOV DISPBIT,A
             POP  PSW
             POP   DPL
            POP   DPH
             POP   ACC
              RET
DISPTABLE:     DB      0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0BFH,0FFH
 END
                   

相关帖子

沙发
chen3bing| | 2008-10-19 14:42 | 只看该作者

re

你要求助什么?

使用特权

评论回复
板凳
hgjinwei| | 2008-10-19 18:40 | 只看该作者

估计是参数传递问题

使用特权

评论回复
地板
sean139453|  楼主 | 2008-10-20 09:17 | 只看该作者

就是不知道怎么调用汇编

 就是不知道怎么能把C和汇编连接起来啊

使用特权

评论回复
5
sean139453|  楼主 | 2008-10-20 10:49 | 只看该作者

编译器的问题

韦幅编译器怎么编译c与汇编的混编

使用特权

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

本版积分规则

32

主题

83

帖子

1

粉丝