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

2010-2-22 23:57 1533 5 8 分类: MCU/ 嵌入式

关于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单元
;========================代码结束============================= 

PARTNER CONTENT

文章评论3条评论)

登录后参与讨论

用户377235 2013-3-14 10:19

我的邮箱是838032235@qq.com 如有更加详细的资料请给我发一份 我最近正需要这方面的东西 非常着急 先谢谢了!

用户377235 2012-12-28 16:50

我的qq757118560,如果有更加详细的资料能发到我的邮箱,感谢不尽!

用户377235 2012-12-28 16:48

谢谢!这个我找了好久,终于看到了,正在研究。希望和你多多交流啊!

用户1376379 2008-9-25 10:36

yuzhenghuaii@gmail.com

用户147589 2008-9-23 19:29

我想要汇编  wanghonghui963@163.com 先说声谢谢

用户147589 2008-9-23 19:28

我想要汇编   wanghonghui963@163.com 先说声谢谢

用户152100 2008-7-15 02:34

13425621709@139.com

用户150732 2008-5-31 15:54

我正在研究步进电机! 实用!

用户1407150 2008-5-31 14:31

我们一起进步!

用户1407150 2008-5-30 18:29

很好的程序,在学步进电机的朋友可以参考!
相关推荐阅读
yoyowind 2010-02-23 00:31
3.3V RS-485收发芯片资料.
3.3V的系统越来越多了,不得不选用3.3V的外围芯片,458即可以选用MAX3485或MAX3490,附件是资料....
yoyowind 2010-02-23 00:31
关于VC使用控件数组。
用过VB的知道,VB中控件数组的概念的确极大方便了编程。其实在VC中同样可以使用控件数组,但是是以起别名的方式来实现的。最近做了一个对话框程序,由于静态文本(STATIC)比较多,所以考虑使用控件数组...
yoyowind 2010-02-23 00:31
彩票上的第一桶金。
昨天路过某彩票站,想想干脆买点吧,就买了5个七乐彩(30选7),晚上开奖,由于没时间就没看。今天中午看了看,发现选中了5个号,根据规定获得了5等奖,也就是用10块钱换到了50块钱。嘿嘿!有意思!其实买...
yoyowind 2010-02-23 00:31
[08.1.1纪念]新年选购衣服要点。
    本文只是抢个新年头帖,和技术文章真的是一点都不沾边。当然,没有作特别标注的,一定是原创。这篇也不例外。原创文章也是本博客最大特点,尽量避免去转载那些在网上已经传烂了的东西。    记得以前还有...
yoyowind 2010-02-23 00:31
关于PROTEL原理图。
其实PROTEL原理图是电路的一个原理,而不是布局。有人曾经问我这个硬件菜鸟,为什么在建SCH库的时候,芯片的引脚不是按顺序排列的。我回答如此。但是我想他一定很不服气,而且肯定在下决心说“我一定把我的...
yoyowind 2010-02-23 00:31
共识的济南车瞻最漂亮的车模,为什么呢?
是比亚迪F3的模特,当时特意拍了张,后来看其他车的时候,别人还说那模特比F3的差远了。...
EE直播间
更多
我要评论
3
5
关闭 站长推荐上一条 /3 下一条