📄 fuzzy11a.lst
字号:
M68HC11 Portable Cross Assembler 0.05 MS-DOS/PC-DOS Page 1
Thu Oct 10 16:08:33 1991
Command line:
d:\pasm\PASMHC11.EXE -l FUZZY11A.lst FUZZY11A.ASM
Options list:
ON - b - Printing of macro definitions
ON - c - Printing of macro calls
OFF - d - Placing of symbolic debugging information in COFF
ON - e - Printing of macro expansions (changed)
ON - f - Printing of conditional directives
OFF - g - Printing of generated constants list
OFF - q - Expanding and printing of structured syntax
OFF - s - Printing of symbol table
OFF - u - Printing of conditional unassembled source
OFF - x - Printing of cross reference table
OFF - m - Suppress printing of error messages
ON - w - Printing of warning messages
OFF - v - Suppress printing of updated status
OFF - y - Enabling of sgs extensions
ON - o - Create object code
ON - - Formatting of source line listing
Create listing file - l - FUZZY11A.lst
Xdefs:
NONE
Xrefs:
NONE
Input file(s): FUZZY11A.ASM (241 lines)
Output file: FUZZY11A.o
Listing file: FUZZY11A.lst
M68HC11 Portable Cross Assembler 0.05 FUZZY11A.ASM Page 2
Thu Oct 10 16:08:33 1991
Options - MD,MC,NOG,NOU,W,NOMEX,CL,FMT,O
LINE S PC OPCO OPERANDS S LABEL MNEMO OPERANDS COMMENT
00001 * Fuzzy Logic Inferrence Engine
00002 *
00003 *** Data structures and variables
00004 *
00005 opt mex
00006 A 0000 ORG $0000 ;Beginning of HC11 RAM
00007 A 0000 08 A CURRENT_INS RMB 8 ;Storage for 8 8-bit inputs
00008 A 0008 20 A FUZ_OUTS RMB 32 ;Storage for fuzzy outputs
00009 A 0028 04 A COG_OUTS RMB 4 ;Defuzzified outputs
00010 A 002c 01 A LOWEST_IF RMB 1 ;Holds min grade of IF parts
00011 A 002d 02 A SUM_OF_FUZ RMB 2 ;11-bit sum of fuzzy outs
00012 A 002f 03 A SUM_OF_PROD RMB 3 ;19-bit sum of products
00013 A 0032 01 A COGDEX RMB 1 ;Current out # for COG loop 0->4
00014 A 0033 01 A SUMDEX RMB 1 ;Index for sum loop 8->0
00015
00016 A b600 ORG $B600 Beginning of HC11 EEPROM
00017 A b600 b610 A IN_MF_PTRS FDB IN0MF ;Addr of MF data for input 0
00018 A b602 b618 A FDB IN1MF ;Addr of MF data for input 1
00019 A b604 b61c A FDB IN2MF ;Addr of MF data for input 2
00020 A b606 b630 A FDB IN3MF ;Addr of MF data for input 3
00021 A b608 b644 A FDB IN4MF ;Addr of MF data for input 4
00022 A b60a b644 A FDB IN5MF ;Addr of MF data for input 5
00023 A b60c b644 A FDB IN6MF ;Addr of MF data for input 6
00024 A b60e b644 A FDB IN7MF ;Addr of MF data for input 7
00025 *
00026 * Input membership functions are defined by four 8-bit values per
00027 * input label. Up to 8 labels per input so max size of MF data
00028 * structure is 8*8*4=256 bytes. Unused labels take no space.
00029 * Membership functions are trapezoids with the base greater than or
00030 * equal to the top. Values are entered into this program as the
00031 * X coordinates of 4 points but are stored as 2 points and 2 slopes.
00032 *
00033 ***** MACRO Definition for input membership functions
00034 *
00035 MACRO DEF INMF MACR ;For input membership functions
00036 FCB \0 ;First inflection point
00037 IFNE \1-\0 ;Check for divide by zero
00038 FCB ($FF+((\1-\0)/3))/(\1-\0) ;If not, calc slope
00039 ENDC
00040 IFEQ \1-\0 ;Check for divide by zero
00041 FCB $00 ;Indicates vertical slope
00042 ENDC
00043 FCB \2 ;Third inflection point
00044 IFNE \3-\2 ;Check for divide by zero
00045 FCB ($FF+((\3-\2)/3))/(\3-\2) ;If not, calc slope
00046 ENDC
00047 IFEQ \3-\2 ;Check for divide by zero
00048 FCB $00 ;Indicates vertical slope
00049 ENDC
00050 ENDM
00051 *
00052 *****
M68HC11 Portable Cross Assembler 0.05 FUZZY11A.ASM Page 3
Thu Oct 10 16:08:33 1991
Options - MD,MC,NOG,NOU,W,MEX,CL,FMT,O
LINE S PC OPCO OPERANDS S LABEL MNEMO OPERANDS COMMENT
00053 A b610 b610 A INPUT_MFS EQU * ;Input membership functions
00054
00055 A b610 b610 A IN0MF EQU * ;(0) ROTATION
00056 MACRO INV INMF 0,0,0,8*4 ; (0) STOPPED
00056 +A b610 00 A FCB 0 ;First inflection point
00056 + IFNE 0-0 ;Check for divide by zero
00056 + ENDC
00056 + IFEQ 0-0 ;Check for divide by zero
00056 +A b611 00 A FCB $00 ;Indicates vertical slope
00056 + ENDC
00056 +A b612 00 A FCB 0 ;Third inflection point
00056 + IFNE 8*4-0 ;Check for divide by zero
00056 +A b613 08 A FCB ($FF+((8*4-0)/3))/(8*4-0) ;If not, calc slope
00056 + ENDC
00056 + IFEQ 8*4-0 ;Check for divide by zero
00056 + ENDC
00056 +
00057 MACRO INV INMF 0,8*4,$FF,$FF ; (1) NOT_STOPPED
00057 +A b614 00 A FCB 0 ;First inflection point
00057 + IFNE 8*4-0 ;Check for divide by zero
00057 +A b615 08 A FCB ($FF+((8*4-0)/3))/(8*4-0) ;If not, calc slope
00057 + ENDC
00057 + IFEQ 8*4-0 ;Check for divide by zero
00057 + ENDC
00057 +A b616 ff A FCB $FF ;Third inflection point
00057 + IFNE $FF-$FF ;Check for divide by zero
00057 + ENDC
00057 + IFEQ $FF-$FF ;Check for divide by zero
00057 +A b617 00 A FCB $00 ;Indicates vertical slope
00057 + ENDC
00057 +
00058
00059 A b618 b618 A IN1MF EQU * ;(1) EXAMPLE1
00060 MACRO INV INMF $20,$40,$60,$A0 ; (0) TEST1
00060 +A b618 20 A FCB $20 ;First inflection point
00060 + IFNE $40-$20 ;Check for divide by zero
00060 +A b619 08 A FCB ($FF+(($40-$20)/3))/($40-$20) ;If not, calc slope
00060 + ENDC
00060 + IFEQ $40-$20 ;Check for divide by zero
00060 + ENDC
00060 +A b61a 60 A FCB $60 ;Third inflection point
00060 + IFNE $A0-$60 ;Check for divide by zero
00060 +A b61b 04 A FCB ($FF+(($A0-$60)/3))/($A0-$60) ;If not, calc slope
00060 + ENDC
00060 + IFEQ $A0-$60 ;Check for divide by zero
00060 + ENDC
00060 +
00061
00062 A b61c b61c A IN2MF EQU * ;(2) TEMPERATURE
00063 MACRO INV INMF 2*0,2*0,2*40,2*50 ; (0) COLD
00063 +A b61c 00 A FCB 2*0 ;First inflection point
00063 + IFNE 2*0-2*0 ;Check for divide by zero
M68HC11 Portable Cross Assembler 0.05 FUZZY11A.ASM Page 4
Thu Oct 10 16:08:33 1991
Options - MD,MC,NOG,NOU,W,MEX,CL,FMT,O
LINE S PC OPCO OPERANDS S LABEL MNEMO OPERANDS COMMENT
00063 + ENDC
00063 + IFEQ 2*0-2*0 ;Check for divide by zero
00063 +A b61d 00 A FCB $00 ;Indicates vertical slope
00063 + ENDC
00063 +A b61e 50 A FCB 2*40 ;Third inflection point
00063 + IFNE 2*50-2*40 ;Check for divide by zero
00063 +A b61f 0d A FCB ($FF+((2*50-2*40)/3))/(2*50-2*40) ;If not, calc slope
00063 + ENDC
00063 + IFEQ 2*50-2*40 ;Check for divide by zero
00063 + ENDC
00063 +
00064 MACRO INV INMF 2*40,2*50,2*60,2*70 ; (1) COOL
00064 +A b620 50 A FCB 2*40 ;First inflection point
00064 + IFNE 2*50-2*40 ;Check for divide by zero
00064 +A b621 0d A FCB ($FF+((2*50-2*40)/3))/(2*50-2*40) ;If not, calc slope
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -