EDN首页   博客首页

日志档案

发表于 2007-4-17 11:05:57

0

标签: 9S12  单片机  模糊控制  模糊指令  

关于9S12单片机模糊指令的使用方法。

关于9S12单片机模糊指令的使用。

这样的文章在网上很难找,无论是google还是百度基本都搜索不到,曾经搜索到一个代码,写得还可以,但是注释不太清楚。因为要用,就学了学,现在基本搞清楚了,所以把代码和注释都发出来。另外强烈建议把这个做成一个函数,用时只调用即可。这里讲解也不是很详细,如果需要更好的资料可以联系我。

这个程序非常基本,以这个程序为框架也可以做出比较复杂的模糊控制程序,少后再带来模糊控制理论方面的东西。

=====================
;;=========================定义数据============================
;输入精确值 0---40
;输出精确值 30--10

;预留1个字节的精确输入空间
INPUT:  DS.B 1   
;由于有三个MF,所以预留3个字节的模糊输入(隶属度)空间   
FUZZY_INPUT:  DS.B 3;
;模糊输出预留3个字节  
FUZZY_OUTPUT: DS.B 3
;实际输出预留1个字节 
OUTPUT:  DS.B 1

;以下是成员函数定义
; 冷为0-15度,温为10-25度,热为20-40度
MF: FCB 0,15,255,51
FCB 10,25,51,51
FCB 20,40,26,51

;精确输出为,冷时暖气开30分钟,温时开20分钟,热时开10分钟
ACC_OUT:FCB 30,20,10
;以下是规则定义
;IF 冷 THEN 30 0=从FUZZY INPUT冷的偏移量,$FE=先决条件终止符,3=输出偏移量,$FF=本条规则终止
;IF 温 THEN 20
;IF 热 THEN 10
RULES: FCB 0,$FE,3,$FF 
FCB 1,$FE,4,$FF 
FCB 2,$FE,5,$FF 
;=========================数据结束=============================

;=========================代码===============================
MOVB #24,INPUT ;设置输入为24度

;以下完成精确输入的模糊化
FUZZIFY:    LDX #MF ;X寄存器初始化为成员(梯形)函数的地址
            LDY #FUZZY_INPUT ;Y寄存器初始化为存储模糊输入的地址
            LDAA INPUT ;A寄存器装入输入的值
            LDAB #3 ;B寄存器装入成员函数的数目
GRAD_LOOP:  MEM               ;使用MEM指令模糊化精确输入
            DBNE B,GRAD_LOOP ;循环3次
            
             ;以下模糊输出清零
            LDAB #3 ;B寄存器装入模糊输出单元数
            LDY #FUZZY_OUTPUT ;Y寄存器装入模糊输出地址
RULE_EVAL:  CLR 1,Y+            ;把模糊输出清零
            DBNE B,RULE_EVAL ;循环3次

             ;以下完成规则评估,产生模糊输出
            LDX #RULES ;X加载规则地址
            LDY #FUZZY_INPUT ;Y加载模糊输入
            LDAB #3 ;一共3个模糊输入
EVALUE:     
LDAA #$FF                    ;A装入$FF,指令要求
            REV ;评估指令
            DBNE B,EVALUE ;循环3次

;以下反模糊化
DEFUZ:      LDX #ACC_OUT ;X为精确输出保存的地址,用于计算最终输出
            LDY #FUZZY_OUTPUT ;Y为模糊输出地址
            LDAB #3 ;一共3个模糊输出
            WAV ;反模糊
            EDIV ;除法
            TFR Y,D ;Y->D
            STAB OUTPUT             ;结果放入OUTPUT单元
;========================代码结束============================= 

系统分类: 单片机   |   用户分类: VC++   |   来源: 原创   |   【推荐给朋友】   |   【添加到收藏夹】

    阅读(1168)    回复(1)  

投一票您将和博主都有获奖机会!

最新评论

  • greeni

    2007-10-24 20:03:05

    你好,看了关于飞思卡尔的一些文章,收获不少。我在准备今年的智能车比赛,希望能和你交流。igreen@163.com 请你留意你的163邮箱 谢谢