请帮忙看下 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 |