1、在汇编文件中,程序前边加上如下三句话就可以:
PUBLIC _delay, _binrlc ;定义公用子程序名,这里定义了两个子程序(有下划线)
LUOYUAN SEGMENT CODE ;程序段命名,LUOYUAN,叫啥名都可以
RSEG LUOYUAN
下边放子程序(程序名要下划线,其它标号不要下划线)
;汇编语言文件
PUBLIC _delay, _binrlc;定义子程序名
LUOYUAN SEGMENT CODE ;命名LUOYUAN的程序段
RSEG LUOYUAN
_delay: MOV P1,#55H
MOV R2,#30H
DJNZ R2,$
RET
;**********************************************;P3.2 74LS595锁存口
;P3.3 74LS595时钟口;P3.4 74LS595数据口
;P3.5 工作指示
;**********************************************
_binrlc: CLR P3.2 ;锁存
MOV A,R7
;XRL A,#0FFH ;显示要取反
MOV R3,#8H
binrl1: CLR P3.3 ;时钟位下降
RLC A ;连同进位左移1位
MOV P3.4,C ;进位到直接寻址位
SETB P3.3 ;时钟位上升
DJNZ R3,binrl1
SETB P3.2 ;锁存
CPL P3.5 ;取反闪亮
RET
END
2、在C程序中,先声明外部函数,不然编译找不到函数错误,然后就如同C程序中调用C函数一样
binrlc(SBUF); 不要下划线。
本程序89C51接收PC 串口来的数据,送到74LS595驱动的LED显示。
//89C51串口0方式驱动74LS595
// 11.0532
// P3_4控制锁存
#include "AT89X51.h"
void initUart(void)
{
TMOD|=0x20;
SCON=0x50;
PCON|=0x80;
TH1=0xfa;
TL1=0xfa;
TR1=1;
ES=1;
}
extern void binrlc(char); //外部函数声明
void uart(void) interrupt 4
{
if(RI)
{
RI=0;
binrlc(SBUF); //调用汇编子程序,方式同C子程序一样
P1= SBUF;
}
else
TI=0;
}
void main(void)
{
initUart();
EA=1;
while(1);
}
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』