子程序库的使用方法如下:1.将子程序库全部内容链接在应用程序之后,统一编译即可。优点是简单方便,缺点是程序太长,大量无关子程序也包含在其中。 2.仅将子程序库中的有关部分内容链接在应用程序之后,统一编译即可。有些子程序需要调用一些低级子程序,这些低级子程序也应该包含在内。优点是程序紧凑,缺点是需要对子程序库进行仔细删节。MCS-51 浮点运算子程序库及其使用说明本浮点子程序库有三个不同层次的版本,以便适应不同的应用场合: 1.小型库(FQ51A.ASM):只包含浮点加、减、乘、除子程序。 2.中型库(FQ51B.ASM):在小型库的基础上再增加绝对值、倒数、比较、平方、开平方、 数制转换等子程序。 3.大型库(FQ51.ASM):包含本说明书中的全部子程序。 为便于读者使用本程序库,先将有关约定说明如下: 1.双字节定点操作数:用[R0]或[R1]来表示存放在由R0或R1指示的连续单元中的数 据,地址小的单元存放高字节。如果[R0]=1234H,若(R0)=30H,则(30H)=12H,(31H)=34H。 2.二进制浮点操作数:用三个字节表示,第一个字节的最高位为数符,其余七位为 阶码(补码形式),第二字节为尾数的高字节,第三字节为尾数的低字节,尾数用双字节 纯小数(原码)来表示。
上传时间: 2013-10-15
上传用户:wmwai1314
4位八段数码管的十进制加计数仿真实验,程序采用汇编语言编写。此程序在仿真软件上与EDN-51实验板上均通过。仿真图中的数码管位驱动采用74HC04,如按EDN-51板上用想同的PNP三极管驱动在仿真软件上则无法正常显示。程序共分5块,STAR0为数据初始化,STAR2为计数子程序,STAR3为4位数码管动态显示子程序,STAR4为按键扫描子程序,STS00是延时子程序。由于EDN-51实验板上没装BCD译码器,所以编写程序比较烦琐。 程序如下: ORG 0000H LJMP STAR0 ;转程序 SRAR0ORG 0200H ;程序地址 0200HSTAR0: CLR 00 ;位 00 清 0 MOV P1,#0FFH ;#0FFH-->P1 MOV P2,#0FH ;#0FH-->P2 MOV P0,#0FFH ;#0FFH-->P0 MOV 30H,#00H ;#00H-->30H MOV 31H,#00H ;#00H-->30H MOV 32H,#00H ;#00H-->30H MOV 33H,#00H ;#00H-->30H LJMP STAR3 ;转程序 SRAR3STAR2: MOV A,#0AH ;#0AH-->A INC 30H ;30H+1 CJNE A,30H,STJE ;30H 与 A 比较,不等转移 STJE MOV 30H,#00H ;#00H-->30H INC 31H ;31H+1 CJNE A,31H,STJE ;31H 与 A 比较,不等转移 STJE MOV 31H,#00H ;#00H-->31H INC 32H ;32H+1 CJNE A,32H,STJE ;32H 与 A 比较,不等转移 STJE MOV 32H,#00H ;#00H-->32H INC 33H ;33H+1 CJNE A,33H,STJE ;33H 与 A 比较,不等转移 STJE MOV 33H,#00H ;#00H-->33H MOV 32H,#00H ;#00H-->32H MOV 31H,#00H ;#00H-->31H MOV 30H,#00H ;#00H-->30HSTJE: RET ;子程序调用返回STAR3: MOV R0,#30H ;#30H-->R0 MOV R6,#0F7H ;#0F7H-->R6SMG0: MOV P1,#0FFH ;#0FFH-->P1 MOV A,R6 ;R6-->A MOV P1,A ;A-->P1 RR A ;A向右移一位 MOV R6,A ;A-->R6 MOV A,@R0 ;@R0-->A ADD A,#04H ;#04H-->A MOVC A,@A+PC ;A+PC--> MOV P0,A ;A-->P0 AJMP SMG1 ;转程序 SMG1SDATA: DB 0C0H,0F9H,0A4H,0B0H,99H DB 92H,82H,0F8H,80H,90H SMG1: LCALL STAR4 ;转子程序 SRAR4 LCALL STS00 ;转子程序 STS00 INC R0 ;R0+1 CJNE R6,#07FH,SMG0 ;#07FH 与 R6 比较,不等转移 SMG0 AJMP STAR3 ;转程序 SRAR3STAR4: JNB P2.0,ST1 ;P2.0=0 转 ST1 CLR 00 ;位 00 清 0 SJMP ST3 ;转ST3ST1: JNB 00,ST2 ;位 00=0 转 ST2 SJMP ST3 ;转 ST3ST2: LCALL STAR2 ;调子程序 STAR2 SETB 00 ;位 00 置 1ST3: RET ;子程序调用返回ORG 0100H ;地址 0100HSTS00: MOV 60H,#003H ;#003H-->60H (211)DE001: MOV 61H,#0FFH ;#0FFH-->61H (255)DE002: DJNZ 61H,DE002 ;61H 减 1 不等于 0 转 DE002 DJNZ 60H,DE001 ;60H 减 1 不等于 0 转 DE001 RET ;子程序调用返回 END ;结束 上次的程序共有293句,经小组成员建议,本人经几天的研究写了下面的这个程序,现在的程序用了63句,精简了230句。功能没有减。如谁有更简练的程序,请发上来,大家一起学习。 4位八段数码管的十进制加计数仿真实验(含电路图和仿真文件)
上传时间: 2013-10-11
上传用户:sssl
PLC TM卡开发系统汇编程序(ATM8051) ;***************** 定义管脚*************************SCL BIT P1.0SDA BIT P1.1GC BIT P1.2BZ BIT P3.6LEDI BIT P1.4LEDII BIT P1.5OK BIT 20H.1OUT1 BIT P1.3OUT2 BIT P1.0OUT3 BIT P1.1RXD BIT P3.0TXD BIT P3.1PCV BIT P3.2WPC BIT P3.3RPC BIT P3.5LEDR BIT P3.4LEDL BIT P3.6TM BIT P3.7;********************定义寄存器***********************ROMDTA EQU 30H;NUMBY EQU 61H;SLA EQU 60H;MTD EQU 2FH;MRD EQU 40H;TEMP EQU 50H;;ORG 00H;;INDEX:MOV P1, #00H;MOV P2, #0FFHMOV MTD ,#00HCALL REEMOV R0,40HCJNE R0,#01,NO;MOV P2,#1CHLJMP VIMEN MOV P2,#79HACALL TOUCHRESET ;JNC NO ;CALL READTM ;CJNE A,#01H,NO;NOPMOV MTD, #00HCALL WEENOPMOV P2,#4AHSETB BZCALL TIMECLR BZMOV PCON, #0FFHVIME:CALL TIME1CALL TOUCHRESETJNC VIMECALL READTMCJNE A, #01H,VIME;NOPNOPNOPIII: MOV MTD,#00HCALL REECALL BBJNB OK,NO1LJMP ZHUNO1:MOV MTD,#10H
上传时间: 2014-03-24
上传用户:448949
1 Communication Protocol (Computer as master) The communication protocol describes here allows your computer to access 4096 internal registers (W0000-W4095) and 1024 internal relays (B0000-B1023) in the Workstation.. 1.1 Request Message Format Request message is a command message to be sent from the computer to the Workstation. The data structure of request message is shown below. Note that numbers are always in hexadecimal form and converted into ASCII characters. For example, Workstation unit number 14 will appear in the message as character 0(30H) followed by character E(45h); a BCC of 5Ah will appear in the message as character 5(35h) followed by character A(41h).
上传时间: 2013-10-28
上传用户:cxl274287265
12864液晶时钟显示程序 LCD 地址变量 ;**************变量的定义***************** RS BIT P2.0 ;LCD数据/命令选择端(H/L) RW BIT P2.1 ;LCD读/写选择端(H/L) EP BIT P2.2 ;LCD使能控制 PSB EQU P2.3 RST EQU P2.5 PRE BIT P1.4 ;调整键(K1) ADJ BIT P1.5 ;调整键(K2) COMDAT EQU P0 LED EQU P0.3 YEAR DATA 18H ;年,月,日变量 MONTH DATA 19H DATE DATA 1AH WEEK DATA 1BH HOUR DATA 1CH ;时,分,秒,百分之一秒变量 MIN DATA 1DH SEC DATA 1EH SEC100 DATA 1FH STATE DATA 23H LEAP BIT STATE.1 ;是否闰年标志1--闰年,0--平年 KEY_S DATA 24H ;当前扫描键值 KEY_V DATA 25H ;上次扫描键值 DIS_BUF_U0 DATA 26H ;LCD第一排显示缓冲区 DIS_BUF_U1 DATA 27H DIS_BUF_U2 DATA 28H DIS_BUF_U3 DATA 29H DIS_BUF_U4 DATA 2AH DIS_BUF_U5 DATA 2BH DIS_BUF_U6 DATA 2CH DIS_BUF_U7 DATA 2DH DIS_BUF_U8 DATA 2EH DIS_BUF_U9 DATA 2FH DIS_BUF_U10 DATA 30H DIS_BUF_U11 DATA 31H DIS_BUF_U12 DATA 32H DIS_BUF_U13 DATA 33H DIS_BUF_U14 DATA 34H DIS_BUF_U15 DATA 35H DIS_BUF_L0 DATA 36H ;LCD第三排显示缓冲区 DIS_BUF_L1 DATA 37H DIS_BUF_L2 DATA 38H DIS_BUF_L3 DATA 39H DIS_BUF_L4 DATA 3AH DIS_BUF_L5 DATA 3BH DIS_BUF_L6 DATA 3CH DIS_BUF_L7 DATA 3DH DIS_BUF_L8 DATA 3EH DIS_BUF_L9 DATA 3FH DIS_BUF_L10 DATA 40H DIS_BUF_L11 DATA 41H DIS_BUF_L12 DATA 42H DIS_BUF_L13 DATA 43H DIS_BUF_L14 DATA 44H DIS_BUF_L15 DATA 45H FLAG DATA 46H ;1-年,2-月,3-日,4-时,5-分,6-秒,7-退出调整。 DIS_H DATA 47H DIS_M DATA 48H DIS_S DATA 49H
上传时间: 2013-11-09
上传用户:xingisme
12864液晶时钟显示程序 LCD 地址变量 ;**************变量的定义***************** RS BIT P2.0 ;LCD数据/命令选择端(H/L) RW BIT P2.1 ;LCD读/写选择端(H/L) EP BIT P2.2 ;LCD使能控制 PSB EQU P2.3 RST EQU P2.5 PRE BIT P1.4 ;调整键(K1) ADJ BIT P1.5 ;调整键(K2) COMDAT EQU P0 LED EQU P0.3 YEAR DATA 18H ;年,月,日变量 MONTH DATA 19H DATE DATA 1AH WEEK DATA 1BH HOUR DATA 1CH ;时,分,秒,百分之一秒变量 MIN DATA 1DH SEC DATA 1EH SEC100 DATA 1FH STATE DATA 23H LEAP BIT STATE.1 ;是否闰年标志1--闰年,0--平年 KEY_S DATA 24H ;当前扫描键值 KEY_V DATA 25H ;上次扫描键值 DIS_BUF_U0 DATA 26H ;LCD第一排显示缓冲区 DIS_BUF_U1 DATA 27H DIS_BUF_U2 DATA 28H DIS_BUF_U3 DATA 29H DIS_BUF_U4 DATA 2AH DIS_BUF_U5 DATA 2BH DIS_BUF_U6 DATA 2CH DIS_BUF_U7 DATA 2DH DIS_BUF_U8 DATA 2EH DIS_BUF_U9 DATA 2FH DIS_BUF_U10 DATA 30H DIS_BUF_U11 DATA 31H DIS_BUF_U12 DATA 32H DIS_BUF_U13 DATA 33H DIS_BUF_U14 DATA 34H DIS_BUF_U15 DATA 35H DIS_BUF_L0 DATA 36H ;LCD第三排显示缓冲区 DIS_BUF_L1 DATA 37H DIS_BUF_L2 DATA 38H DIS_BUF_L3 DATA 39H DIS_BUF_L4 DATA 3AH DIS_BUF_L5 DATA 3BH DIS_BUF_L6 DATA 3CH DIS_BUF_L7 DATA 3DH DIS_BUF_L8 DATA 3EH DIS_BUF_L9 DATA 3FH DIS_BUF_L10 DATA 40H DIS_BUF_L11 DATA 41H DIS_BUF_L12 DATA 42H DIS_BUF_L13 DATA 43H DIS_BUF_L14 DATA 44H DIS_BUF_L15 DATA 45H FLAG DATA 46H ;1-年,2-月,3-日,4-时,5-分,6-秒,7-退出调整。 DIS_H DATA 47H DIS_M DATA 48H DIS_S DATA 49H
上传时间: 2013-12-25
上传用户:wvbxj
电子屏字符显示器 四个显示字符数据表放在50H-6FH单元内,字符用8*8点阵,R4(30H)用于控制显示静止字的时间,R5(31H)静止字显示跳转地址步距,B内放显示首址
上传时间: 2013-11-26
上传用户:2404
EEPROM 24CXX应用程序供参考 对EEPROM数据区读出(当前值=ADDR+WRC_<=0FFH),每进行一次读操作将使ADDR值减一;读出数据后程序将把该数据存入通用寄存器中,开始存放的地址由FSR的值指定(范例为30H),每进行一次读操作将使FSR的值加一;读出规定个数(由寄存器REC_给定,范例值为0FH)的数值后,结束读出,回main
上传时间: 2015-07-05
上传用户:playboys0
这个程序的任务是键盘显示数字,也就是分别按倚天版的4个小键盘,右边的数码管轮流分别显示数字0,1,2,3,为了便于程序的讲解,我们把每一句分别编号, 实际输入程序时,就不用写后面的号码了。第1,2,3行是单片机的初始化,一般的程序都是这样开头的, 作用是跳开00-30H的地址单元,因为这些单元是分配给特殊寄存器使用的。第6行把p3送0ffh,作用是把这些端口p3.0-p3.7置高电平, 因为倚天版的键盘接在p3口,只有当端口为高电平时, 我们按下键盘,那么这个端口被短路到地,端口被强行变为0。根据这个大家自行分析第4句的意思。第5行clr p2.6,就是选中最右边的数码管。 板上一共有6个数码管,分别是p2.1,p2.2,p2.3p2.4p2.5p2.6.
上传时间: 2015-10-22
上传用户:gououo
*** *** *** *** *液晶显示*** *** *** ******************OCM4X8C串口****************** CS EQU P2.0 STD EQU P1.2 SCLK EQU P1.3 PSB EQU P1.4 RST EQU P1.5 RS_STU EQU 20H.0 LCD_X EQU 30H LCD_Y EQU 31H LCD_X1 EQU 32H LCD_Y1 EQU 33H COUNT EQU 34H COUNT1 EQU 35H COUNT2 EQU 36H COUNT3 EQU 37H LCD_DATA EQU 38H LCD_DATA1 EQU 39H LCD_DATA2 EQU 3AH DA_IN EQU 3BH WR_COUNT1 EQU 3CH WR_COUNT2 EQU 3DH
上传时间: 2013-12-26
上传用户:李彦东