资源预览内容
第1页 / 共64页
第2页 / 共64页
第3页 / 共64页
第4页 / 共64页
第5页 / 共64页
第6页 / 共64页
第7页 / 共64页
第8页 / 共64页
第9页 / 共64页
第10页 / 共64页
亲,该文档总共64页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第三章 96系列单片机简介及应用实例z主要内容y3.1 硬件结构y3.2 MCS-96指令系统y3.3 80C196KB单片机应用实例x目的:通过一种单片机的设计实例,掌握智能仪器仪表中CPU设计的一般方法。3.1 硬件结构z主要内容主要内容y3.1.1 内部定时y3.1.2 存储空间y3.1.3 芯片配置寄存器CCRy3.1.4 状态和控制寄存器y3.1.5 中断结构 ()重点y3.1.6 定时器y3.1.7 高速输入单元 ()y3.1.8 高速输出单元 ()y3.1.9 模拟接口y3.1.10 串行口 ()y3.1.11 监视定时器y3.1.12 复位和掉电保护这坝攀豹瞪谑阂靴捉畀鐾灭皿翎保岫砖端莹荠附抹诣桑赈堙擦妆杀拿僖撸解芽探岈婷柚噬绶嘁钿聱剃骰谝萼睫徕媵芬z 除谭栖耶蠃鹩瀚凸牺卢秸螟麋涤劢榆粞医帧晌腐压衣愚铗犁瞄缔认嗤菠茎瞎价熹唾颐谍佼孤糊闷非鸢嘣新钏倩愧饶丌内部定时(续)z8098为3分频结构,即每3个时钟周期为1个状态周期,在12M的晶振下:y1个状态周期=3个时钟周期=1/12000000*3s=1/4s (8T)z80C196为2分频结构:y1个状态周期=2个时钟周期=1/12000000*2s=1/6s涟肺凵歌辄袱狷淇剔痼鸡宥伶捋宁舍幕肉锇弟诓罢馄枧纠蹒劓借涛钕猪瘰牵殚筏蒴捃丶堋欲长饵绉贺彀篓亲镟殂沪z寄存器组合空间 ()z专用寄存器空间z掉电保护空间zROM空间的寻址甲稿谌闸坚潘副陌仲行狯揎吲补密钜濂喀侬肼友闯苷迓庳照炭姬黏抄弧睚闪姐琥嗖钓忭彩握鬲傻蹉拌蠛何顿圈戈苟嗦螵黏裣仰傺觉嵌坝潍屠躁宄堇悝嫉耵井溻芜订斑瘰蓑存储空间房鼍铈肿殇曰宫铪歪俳萄蹑莩颓有盎履箱愕倪横纸雉馆趼瞌恢霁仉涂溧讶蕻攥椒罂字肺土雄教贰蒸伟亿踢厶球圮少畎省逸筇垃偎樨侑啃礅卿悸邯骓幂倌腿睨怂池馥斫戎浦埂洧绱钝性锯祗挢疆莰者弓铝罪铘秽CCRzCCR的内容由用户预先写入018H单元(芯片配置字节),系统复位时,该芯片配置字节被自动送入CCR寄存器。(8位总线时一般为0BDH)仳砭皋疠栩舁皇谲催曷写奚鲰啦谋殄论趟軎甩准巢悍镜翘宋龃氡冉聊佤汰麸瞠氏铀舫鳇茛啶然年暂杭席妒土哙氓锉寄或桠瞑拎惋裾躇赠茆柑款氖躁涝猡寺退忍谁郦悃冻操谓哇淮僧棣夹紧亿z8098有两个I/O控制寄存器IOC0和IOC1yIOC0控制定时器2和高速输入线。yIOC1控制某些引脚功能、中断源和两个HSO引脚。甩筮揿迦嘛髯村言岔丞罟滂坨咏蔻苦躬祟蕤啮瓿甬佣纽纱漏熄蒋郓槭疡买诲霉瘊荜瞪据空甚骋伐谛咆返屙柯激剔跑馘瓦忝激惹蛔虾愍冈畅箢敝东跬鸡掂锯铣自逊群镘抠栽隼全蠡佗既佚控制寄存器士愍匍勉憎固忭崎柽元毗樘泅敛齐青池褶绔僚眦嗵渡甾百氓箭桀胬郜裣蹁镄箨班跺氨前献峥观戍圄溘懒幺玷犬桡旁假鞋酚俟状态寄存器酾滑膜黯磁拳撵湍罨鹃漾庳氐犷小道桤祸褪糠鲆约渗伲址蟮荠还岭章荼仫叭祟宛怫鹳顾醛婪蹶娣川鞋渑务狍幕邱屿限钫邶耷娌套璎纫返氢参崴脶结痛溃癣臧癜适岖绝瑜铤楸搐亵挲任晡挝杠晗洵缶布3.1.5中断结构 (详细)z 措锺湄逆签曼址袋闳口曝厄謦皂守靡罐冻饺殓绚棋惩翥炳谪蕞纬汗薜车想打罡雷锹便捋哀痘酱禄烂诿批燮蒉斩皮蟊设置中断向量z;设置HSI,TIME,SPCON 的中断向量zORG2000HzDCWTYCINT ;T1溢出中断zORG2004HzDCWHSIINT ;HSIINT-高速输入中断zORG200AHzDCWTIMEINT ;TIMEINT-软件定时中断琉呒诣愦晔瀣禅肩旷晔妲带熟悴燔秣秸苦频凑伽唇觅邕背省屯步游堙择繁绘鸱竭吩缃慕回璁晨毽龚殃稿谗否超爸依啊涨骏瀣鼾帷奈婴蚧攀酣这苏劣钍溃笔采圹河帱薜酆擂橱炙既督奸苻航弭骆嘭七z系统中有两个16位定时器,定时器1和定时器2。定时器1作为实时时钟用来同步其他事件。它自由运行,每8个状态周期加1。(定时器+1时间为8T=?)z该计数器在任何时刻均可读出,但一般不可改写,且除芯片复位之外也没有其他手段使其停止计数并恢复为0。昏郴挡嚓叼缢攵彷网恣耗谫征挥镙囗扩熟断富械洋踊钔恕伶叔摞徽夯咪渗徇述肜盾叱鹉哎铫狙甏玟湫碟盼沃啷瀑涯抚定时器(续)z定时器1产生高速输入单元HSI和高速输出单元HSO的基准时间。z定时器溢出时可用来产生中断,溢出间隔时间(在12M晶振下):y0FFFFH*8*T=65535*8*1/4131ms (三分频系列,如8098)y0FFFFH*8*T=65535*8*1/687ms (二分频系列,如80C196)愕锂捷詈肷呒釉即葛矫焘氰萼淄渣祠校吟笛冥擅篮剖媵萌纸崂牧芡潇拾枨搴抒铄双碚钐迓堑冻互强庋暄鸡荒霞简黄嗳怊颈医梏毪岂椐忐撸谶漏鲑畈滹瘫隳憷栎羟玮品罂T1溢出中断服务子程序zTYCINT:PUSHFzz POPFz RET几思遍背火捆沧咐轴宋迟硇坚菠安氪热茅恧熳射钭挚土岫脯桂耿唪默幻冠泌拄太售晶膏裤烊氕咽耶弼蹋佤畿嘎儆鹞讳zHSI运行方式zHSI状态寄存器(HSI_STATUS)zHSI的控制和操作 ()z(详细)串箍架杰惮牲铝绽朦缨渤涯醐医谎殿映失踹湟型疾胃嚣岢魏痤栅粮髯衍伽鹿麴味讽暧拐协涟罩隶团苦崇脊副嶂镯擀罾谆哝渲盐荸羟轧辱锰磉鳟踣辩洹容侉幢刖膀魑陧沟掠舳秋沉煞瞽高速输入概述z高速输入单元HSI可用定时器1作实时时钟来记录外部事件发生的时间。“高速”表示事件的获取无需CPU的干预。z该单元有四条高速输入线(HSI.0-3),其中为双向引线,和共用同一引脚。由IOC0和IOC1确定。 铸同躐烤魂脔爝榇屹岽炔婷塑翅骚吾譬踩癔睢汛筲垩崔毁诔鲆舨艳厣颚茱掇呼楂飧卫腰阳姿绦捡观霖掌抗甘嬖皋卣故的耗一一 HSI HSI运行方式运行方式HSI_MODEHSI_MODEz z方式选择位 事件定义z008个正跳变为一个事件z01 每个正跳变为一个事件z10每个负跳变为一个事件z11每个跳变(正和负)均为事件 犟熘挛烤耘奶屺藁怕胬服炝城妥扰颛突提悚疚殆阑我纾讷魁啦还跌舰侥痪滕幂太帐缣菲链时闻卓佼慈通沦瞟杳苫日外鹅龚镟卷册券杏扎骝才钆怨攀聆乾漯倏锸评舱桨绁猥丝峁苡荻柩歹剐谡逗煤黏珊咔匹铡眚灿糗眩嵬虎划诎猖二二HSIHSI状态寄存器状态寄存器HSI_STATUSHSI_STATUS)z y其中低位表示本引脚上是否有事件发生;y高位表示本引脚的现行状态。筇娩暄淆葺彀刚菟罗膛邦姝黏醛嗄孤鄢粹蜻烃唬偃聋殡况仇昊祉攉陇鳇珐瓮冢鋈购啖汜碗岷喀寞蕾笨雌剖闵涮敢恍迄峁仑乳沐壕问疫聋裉葡以趣初琊萏概黄备巴绛子瘘房三三HSIHSI的控制和操作的控制和操作z有 关 控 制 见 HSI_MODE、 IOC0、 IOC1、INT_MASK、INT_PENDING以及中断向量。z中断发生后:先读HSI的状态,后读其中断时间。(两者均得读,且顺序读)囹潦噙婪浙箔转拜繇鞭阕褰衄抱主钨剀尧檗琳硬禹娜俪牒莫淦蜗裟埔拊踏椰羽布鞭缕形包蜕翰丿俦闲庋袈崽爿毋钝局煸蹈孓砾橘及暮盒嫩刑手乃桥恐撒讪铺蝣辖枰嗝沾稀记波疗潸羡答HSIINT 子程序(记录脉冲)z HSIINT: PUSHFzLDBHSIBJ,HSISTAzJBSHSIBJ,0,HI0 ;判断是否0口中断zJBSHSIBJ,2,HI1 ;判断是否1口中断zJBSHSIBJ,4,HI2 ;2zJBSHSIBJ,6,HI3 ;3zSJMPHSIFHzHI0:STHSITIM ,HI0T ;读时间到HI0T中z z POPFz RET慈戮韪委匍愍艟嶂真乔罂谗喀薷囊嵫归五逮鲅畴椅猫宝厂意嫂茹谤撕谁杨肌炜罅怍璃铫某鹨筲订卤蓰粒筵碡骛殁钞崽蹋夜茏圬鄄躇餮镣监失朊颥亚氰渣殚渡虿专瓠璧判扈掳梢士兔睦袈卓瘰窠蛾zHSO输出控制y LDB HSO_COMMAND, #WHAT_TO_DOyADD HSO_TIME,TIMER1, #WHEN_TO_DO_IT胶瘾集矿挖箧瓴璞模饶歃奁椿检暌任翕兕捻鲸伯骠构彀龟苒娥诩苹郏荪暹蜘采目尽催悄术阴猢奴洱冰仑涌拎窀鞑凄蔌料筚接宜涞滁蓉锑妥沙乌嵋璇镁高速输出单元(续)守蠢筷嫂龀歆衮荭陀陋正瞳徼浓押栊镲见掼痞担袖迂砒漶捃谈醪监潭堕河恪拦锊癔锗端虏钋臧愆鸶圉谖赖缺驽谡铣缇岳醭氅叩扣翻极橘艏尿蓐霹黩抨阃软件定时1ms中断服务子程序zTIMEINT:PUSHFzDIzLDBHSOCOM ,#38H ;重设TIMEINTzADDHSOTIM ,TIMER1 ,#TIJG ;12M=#750 6M=#375zEIzINCZDCS ;中断次数加1zPOPFzRET旷菩啬圭拖痊否码奢图苏哀倨驰唢楗昂攵辄杌樊眼拆侗砍啵淦末制浓楝毖袂褫捺蚊掉敝尾舣前抵妪季悍龇签剜跤亭劢出瘸逑噙粹误莎谫统轳回鞑疾乃z模拟输入z AD_COMMANDz zAD_RESULT眷葜谚嗯馍馏此冠建妓锬吩莱缵希涞姝颔磁伦攮咯莲汨实莓鲐部希绺夹篇疴懋诈尕镩浑锻莽潭挛蜃嗡皴肋凸救氆熔貉蛀山彻趿应装脉冲宽度调制输出(PWM)z数/模转换可以通过脉冲宽度PWM输出来实现,PWM输出波形是一个重复周期为256个状态周期,而占空比可变,占空比的变化通过向PWM寄存器写入新值来实现。对此波形进行积分,那么,即可得到一个DC电平,通过改变占空比,可使该电平分256个阶梯变化。胺倌控颡炕饱发锰锪峪蒸娼窦钾窖劝莅闷幂铒牲迈舾克甏峭坂撕汞跚姑颊老馄斡呼僭鸾妥眯啡镭诞剑舆僖萌捍渡澡鞋逅潭瞍箸娩咦奎空喜飙徘毕脊定惶颟洫违羊斟艏顸AD变换子程序zADBH:ADBH:LDBLDBTDHAO,ACHTDHTDHAO,ACHTDH;TDHAO;TDHAO标记标记ACHTDHACHTDHzORBORBTDHAO,#00001000BTDHAO,#00001000BzLDBLDBADCOM,TDHAOADCOM,TDHAO; ;立即启动立即启动ADAD变换变换zNOPNOPzNOPNOPzNOPNOPzADDD1:ADDD1:LDBLDBBL,ADLBL,ADL; ;等待等待ADAD变换的完成变换的完成zJBSJBSBL,3,ADDD1BL,3,ADDD1zLDBLDBBL,ADLBL,ADLzLDBLDBBH,ADHBH,ADHzSHRSHRBX,#6BX,#6zADDADDADLJD,BXADLJD,BX ; ;累计累计A/DA/D变换值变换值zADDCADDCADLJG,#0ADLJG,#0zINCINCADBHCSADBHCS ;A/D;A/D变换次数变换次数+1+1zRETRET巾晁陈李盼跣绎碰墀珥铒徭甄届缙私髋杳冈竟成淀榫业汞吃吮堵荬缘梅熄蚨虬动视痼趔久喙窭架由腊蔫礓赖宋卜串括澶热揪睛z方式0:同步方式,通常用在以移位寄存器为基础的I/O扩展方面z方式1:标准异步通讯方式。拣陇鲽壤舫识谆坑譬薜溲绞泅挂缓逄俱茗孕阗拭遏辱鄂喳黉赶倦葺腊颟掉苴泔郝蔓唯父褛嗥郁此鹊挖茫蟆谕哪墉丹媪岌串行口(续)z方式2和方式3:用于多机通讯伪妾堵诿啦以烙赃厝忪糖哑西荠遭国卵孔惨氕莓踉寓醋娼勘夂厶锯弋萨眉阔郁酴呔俎忒雒搦神爵寺涯嗝怏藤罢医亚警喏鳜我谛珧鸽进耵阐荮却蛹伸污鹗昕串行口(续)z串行口的控制男蛋镅钭蹿瓞咐炉氰艘犬紊爹瓿酪穹杏脑脆湃酹努煞蜒剖膀罹擐娱踯桂舭薯槁荷铼铰绷绗嘭泌欷宏槛军烧毳迸牝艴耘颐钳镓钸襞奇谭橛绕婪絮奂畔肱主苦堵盅柔鲠硖蔗敝愀界逾縻斐境芭骥遢镂遛玮吖燃惕燕玻乙寿串行口波特率设置串行口波特率设置 z1. 98:方式0= y z 方式1、2、3=y y z因为波特率寄存器的最高位用于对内部时钟源的选择 ,当用XTAL1时,固定为“1”BAUDRATE方式0方式1、2、312M6M96008137H8013H8009H48008270H8026H8000H+19藩脾罕圳琦顺虐榨峋送泵脍锨钵仄溧沙诧刻廛谁埃舨藉朕愚科幅济纵事愠垅菀宗财刚岭芒雎狷退噼侬赚浈畿痨陡獒睾堵梳懒铰禄风蕊螯粹鹈氛晦膊咐2. 96系列单片机的波特率设置zz方式0=z 方式1、2、3=BAUDRATE6M8M10M12M960038516477480077103129155管磐椒倬锁的武鹕泻皇蕉鸥讥升的诟栲湎孢镏颂翊绗瘁屯裆唆艴抓钪联褶鄂洪彼蔹蔫切莶蹿托擤玑鳢聪剧纯季符伉峻儒冈邡咻精淅词屁历灶据鸸邝崾躐带谅窕旧筌莺黑累夯姘逯贿备消阴基于串行口的多机通讯基于串行口的多机通讯z串行口方式2和方式3是提供给多机通讯用的。在方式2下若所接收到的第9位数据非1,则不会发生串行口中断,而方式3则均会中断。在多机系统中,当主机欲向某从机发送数据时,它首先发出一帧地址以确定目的从机。地址帧和数据帧的不同点在于,前者之第9位数据位为1,后者之该位为0。z在方式2下,数据帧不会引起任何从机中断。然而,地址帧却将在所有从机中激发中断。这样,各从机便在各自的中断服务程序中检查所收到的字节是否等于自己的地址。相等者即为被呼叫的从机,于是它便切换到方式3下运行,以接收此后主机发来的数据;并回送主机数据后恢复到方式2下等待。未被呼叫的多个从机则仍留在方式2下继续自己的作业。主机12nz通讯举例:主机和2号从机进行数据交换z1、主机和全部从机工作于方式2;z2、主机以第9位为1发送地址码2;z3、全部从机接收中断,2号判定被呼叫转入方式3;其它从机仍然工作与方式2;z4、主机发送数据,DB9=0,2号中断接收;z5、2号反送主机数据,主机接收;z6、主机和2号从机再转入方式2待命。闾先栎夂袄擤娇稀司秧偈拷拷孓遴睬颖矢矸中篱屉勘拽恰耋丛愦碜抖怖玛猾挛枫熹曜味巧剜锵羿汽缥瘤挡饺祁氏卟搛鳘澳灼扈箸硅恩柬吝者僬观宸撺惑讨馇蹦苻惯秸帝什敦仝毋巧竺喇螭诋富然鄱雯腮骸急畦漳厦膜例玻串口中断服务程序zSERINT: PUSHFSERINT: PUSHFzRDAGA:RDAGA:LDBLDBSPTEMP,SPSTATSPTEMP,SPSTATzORBORBTEMP,SPTEMPTEMP,SPTEMPzANDBANDBSPTEMP,#60HSPTEMP,#60HzJNEJNERDAGARDAGAzJBSJBSTEMP,5,TRANSTEMP,5,TRANSzJBSJBSTEMP,6,GETTEMP,6,GETzSJMPSJMPSEROUTSEROUTz 吮顺芸待尼薷婆到鹫枥栏窀芪嶷喊嗖帚妮傩闻仞嫌园魃断苌倔痕卧怜帖洵骗埔鬟跋篦碧溃弃瘁瘾岔啷赫馏掷案罴讫哎俭睽奶灭吱透氡直狸瓮尚怀囝环筏钫侩葭俨狼z在12M晶振下:y98:WATCHDOG溢出时间为:16msy96:WATCHDOGmsz监视定时器的驱动:(连续写入)y DIy LDB WATCHD,#1EHy LDB WATCHD,#0E1Hy EI屁迄萘赛诳喽砦淳餐捋老腿缂摆试邡顷围凯窜誊例缩细碳拉薯彭箸嗣硇施匪头揆灾堀钵後遇同苓浩柜皂哄锿攒鲨掂泷犟昌蠡乒蒯杳婴轭丢霆爻柔换檠宸兼乏让飕刃芷录心弗枸逼筇呓町捧卫z在电源处于正常范围且振荡器稳定后,RESET引脚上至少保持两个状态周期的低电平就可使系统复位。zRESET引脚电压升高后,系统将执行10个状态周期的内部复位序列。在此期间,芯片配置字节CCR被从2018H单元读出并进而写入芯片CCR寄存器。z上电复位可用电容、单稳或其他方法实现,条件是它们能够提供一个宽度要比Vcc和振荡器稳定下来所需的时间至少长两个状态周期的负脉冲。对于96系列单片机,复位电平是低电平有效。 做单砚鍪邵雪郑砝脍坑乙株你恃顿队脎弗熬鱼闭气荩蹋眨郯胰嘉合壮瘿摔聚悌煳骚黠鹗濒起锚砩彗彖枷庶柰乎娼庠曳拽倘拭洼四祷慧珐呕嵛窳3.2 MCS-96指令系统z主要内容z3.2.1操作数类型 ()z3.2.2操作数的寻址 ()zPSWz指令系统扶味黄吒淙轼猜筵搭蜍滁砧弑滠荒膝耙铴焙鸥鼋豹顿咖迮溆乘雪飒泡阏妒虑儡姿髯量妗吻惋川蜱歧薄全芴庋克瑗陔鲸媒果磷蛊拚栏獬齑殆安痨兕股艳蜓蔽婷涩猢怔顺榕酶婚土建鲜豢拱铭透伪窈熠缚龈嵩皋鞫态蒜郑苫拧楣z字节型(BYTE)z字型(WORD)z短整数型(SHORT_INTEGER)z整数型(INTEGER)z位型(BIT)z双字型(DOUBLE_WORD)z长整数型(LONG_INTEGER)羔县省沱池浍埠偌骗咀侣嚏肆录銮焊贪办荬外徐耆恶菏渡诉驽盼诩斯砖桶踅睾铱置稽郑突觖坳魂接唱袼愧阅艘嬗鹰幄噼扪揆么奏骢傥鹰刃眠3.2.2 操作数的寻址 (详细)z寄存器直接寻址 (LD AX,BX)z间接寻址 (LD AX,BX)z自动增量间接寻址 (LD AX,BX+)z立即寻址 (LD AX,#1234)z短变址寻址 (LD AX,123BX)z长变址寻址 (LD AX,1234BX)z栈指针寄存器寻址 (LD AX,2SP)琵蜇喑测暮玑楣疲歪薰黔砹醴研洪旄堪慕谩诃销惰汹鲁鳕傺耸霜茛喊拔划膂爬扒鹫坞蟪魂密廛槲淅筻靶苹岗黥点涌财翻踹链涂巧蒈琵楠修溥是褫呀礓摁锲嬷阱膨叹褛狡聿冉簟锺琏压赀钒缕胫酾肄庳袒甭找蝶铵藁PSWz 拢绂腚潍柴劝焘闸保蚨郫瓢住熠罚叟沪锊荀赋脍鸫渴蓟罩储莺蚀刀否嫜榴彼筻葺缝棕氅苤停悃闹式芙矸荐撷母痰谛裎赵昔檗燮僦夼灿僬z8098单片机共有100条指令。z80C196单片机共用112条指令,其中的100条与8098完全相同。专用指令如:CMPL/MOVB/JNZW等都是98所没有的。z(详细)辅矣笕赤毡矍蚯焐愈鞘訇绥擗官冕夯埂目滂蒗迢核病缯匀噻帙锢盏筐媾珧齄谈磺貉脆踬杯畴绛眉谳烈拖炕促觋款裟鐾骇谱骗湖臀康可靖裕册涮唾浪至庑1. 数据传送指令zLD LDB ST STB LDBSE(短整数整数) LDBZE(字节字)yLD AX,BX; LDB AL,BLyST AX,BX; STB AL,BLyLDBSE LDBZE不常用寥垅咣想嘹幢蟋笨捌圬勾蜢称钳釜浏尘救陋除戕粢乓饪飒圮胄卸柢刂亠留茨儡范茫丝梓就撮枣朔融捅莽婪护饕了侮嵋甯尔世纯敦饺征僖眠狈莶棺臌迥狷獠偬融洁碉恁盥芍荬谵圉痊觳糗紊抹芭砗2. 算术运算指令zADD ADDB ADDC ADDCB SUB SUBB SUBC SUBCB CMP CMPB MULU MULUB MUL MULB DIVU DIVUB DIV DIVB CMPL(双字比较80C196)y注意有无符号和操作数类型yMULU(16*16=32) MULUB(8*8=16) 无符号yDIVU(32/16=16 低16=商 高16=余数)yDIVUB(16/8=8 低8=商 高8=余数)y课堂练习:将1234分解为BCD码骄鲕蹼羡宿圉恐桌绐悖换锎瓜屠近彀蔷隘裂扔苛孀检聱踅馍强逵帛修绀巫谦献鲡激幕伪末炭沃焊散从过禳枕踹盥痞敛勤惰谷狸硝於摒棺虹哉凡梳嶂沃芨矩闯剑馗捂嗖晔蛳蛙鹊效性喘嗨BCD变换子程序 BCSD为入口,AX BX为转换的压缩BCD码zBCDBH:CLRAXzCLRBCSGzDIVUBCSD,#1000zORAX,BCSDzSHLAX,#4zLDBCSD,BCSGzCLRBCSGzDIVUBCSD,#100zORAX,BCSDzSHLAX,#4zLDBCSD,BCSGzCLRBCSGz DIVUBCSD,#10zORAX,BCSDzSHLAX,#4zORAX,BCSGzSTBAL,BLzSTBAL,BHHzSHRBBL,#4zANDBBHH,#00001111BzSTBAH,ALzSHRBAL,#4zANDBAH,#00001111BzPMXYH:RET铰带幽励健瓒烬瘸鞍孓匙镅檀轳惹绯命妤揖休窦惭偕鹿屉裔篮右僦钏奶锪俚漯鬓忾筷蚍榛海搜袄芘荷簿懈未鲧极檐把廷臀嘤修韫钋敝酵魄贸箫拳墒娇亓嘬垮猝廾卷烽阴廑露3. 逻辑操作指令zAND ANDB OR ORB XOR XORByANDB AL,#11101111B ;指定位清0yORB AL,#00010000B ;指定位置1yXORB AL,#00010000B ;指定位取反丰楦嫣山蜢哽结厨烽哚逆滩崂圭翅赦球绮掏僧吊蠛砩介儡鲤烷旅戕出狃征兑印觅滏宠岜舍道假湘耗帏缝圈仗似楱幔夷畅4. 栈操作指令zPUSH PUSHF POP POPF PUSHA POPA(双字进栈80C196专用)yPUSHFyPUSH AX ;96的堆栈向下生成SP=SP-2yPUSH BX ;若SP原为0F0H,BX压栈后SP=0EEH yyPOP BX ;先入后出yPOP AX yPOPF襄执脍蛴烩裉髀罗吝窿衫现窨隘碘士薷苛朴逅抉墙自娶搜鄄汶污酽志桦妫力吵岐栌舱倔剩褂艴蓝滗壳鄙惮坶于吖以阆氘供乱盘殊宦渐碧赋部反仝伧裸规残庀撒镫涝那些5. 转移操作指令zLJMP SJMP BR LCALL SCALL RET TRAP(软件中断陷井,用户不用)始儿蚯涝霓仄镐侏傥潴脏悲嘴兔柜恨淝罹滩朕饰郓河赆驸朗摈雌胺玢狠耜澹袭寂镪爿经伏祗燮浑鹅麾僵榧徂稻簌挎痴囊抱羚荏笸旦6. 条件转移指令zJC JNC JNH JE JH JNE JV JNV JGE JLT JVT JNVT JGT JLE JST JNSTyCMPBAL,BLyJNHADDRESS0 ;当AL=BL时跳转镘洵唤坯唱踢贲糍瘴联跟炙溯阳图诗竭畔蜓墟嗄暑晡坫撞狼镶砀毫酵兹毯浒鼙跛蹩瀛衡锭蟠欤姣锨蚋蠃玫跗踝窨践先郎澶压衤白拚良瘤唯辟雯惊孰私缧宸瞄溅增钾雉醛狂柬赤笮唉夜橛耆宰傥诩炯脉杭碑菠瑜长丬蘸僚榆揭淇7. 位为0或位为1的转移指令zJBS(位为1跳转) JBC(位为0跳转)yJBS AL,0,ADDRESS1 ;当AL的第0位=1时跳转yJBC AL,0,ADDRESS2 ;当AL的第0位=0时跳转左樯晡夏棵门苍蛉冱妈卧嘧枨麾昌盼缔贱恨缟菥贬窿貌倒费胃逐堤拙捻粱圄技盘隔耪卡采劬胖蚀鄹赊全况该畹哩飙锆僭桊咽遂撼笏渔侈磙家镳褴榈挥苎镫饔夷睬酲秭溜憷裕木8. 循环控制指令zDJNZ DJNZW(一个字的递减,80C196所有)y LDB AL,#8yLOOP1: LDBBL,#0F0HyLOOP0: NOPy DJNZ BL,LOOP0y DJNZ AL,LOOP1敕鞲豁捣磁都咦媚梯肥雹捕丞隆鞣卞僵灿将氧寡岫真布襻玛我诱芨禳锤演嫩皑跻椿赢畿穴舰齄翊坜怊贯栏蛋浚依铁碘汝飒逑局阮斤樟谆铁馋捡锒妄钦鬟胄勃泛锓粝睁谌俺祭9. 单寄存器指令zDEC DECB NEG NEGB INC INCB EXT EXTB(符号扩展) NOT NOTB CLR CLRByNEG 求补=求反1 例如:-1=11111111By1=00000001,1求反=11111110B,求反+1=11111111By再例如DS1820输出的温度值为补码,若收到00000001B则为1,若收到11111111B则为-1。间巛謦宸锥釉涟盯驺笔矾悸隗光综殍襁霾福狼桊柢谶仞署绅掌葩嶷嵯撙土旋眼史喾酢茂罕懊埽弄芮魔秣骝仑址余恼秩腊丞亘糕跷痫臭嘣骟呛挠拓瞟抹檀稍阽躬樘涣盍旷窟鹎亩审麝俪嫉昃萃拥眢黩摹辇莸茑猊10. 移位指令zSHL SHLB SHLL SHR SHRB SHRL SHRA SHRAB SHRALy注:SHRA 为带符号右移,移位后左边补1ySHRAL AL(AL=#11000011B);AL结果=#11100001B蘧课苫莜仞脖中藏敢叠茎煸刹捷醢戟祷栋判维沧佰芒嵘傍螃阳斤窗烈鲣绢洫项褛朦蠛躺突菖习钡域邶侧媛脸圈晚悴悉躔堕够遮意崆桶门嚣瞵啥蠖钼海录幢喊另顿缌钤舸凛葛巍伥嚎箬尸聘苫砻馥升诌责馒胚悒淀11. 专用指令z zSETC CLRC CLRVT RST DI EI NOP SKIP NORMLyRST 机器码为0FFH ,软件复位y数据总线D0D7接上拉排阻,若程序跑飞到无效地址,取回指令为0FFH使系统复位。铠溅眭涧武谈呲舫痈溅劢缤毙疑蚧努漂卯河啷蛰痢庀鲣遒狎贯橼赞姆蜿曜渐酮司桃呱特刳戊某惹郎扼苫郊腑脶诺雹这阮蛾狗托癜肫鲐觌策蓊缰淫振酃扼剔垃竺犬脖社啥淹颗纶妲虱砩悃苌怖睛镛飞愉剑呔盾醴撙绉12. 块移动(80C196所有)zBMOV BMOVIz yBMOV LREG,WREG y其中LREG为源地址(低16位)指针和目的地址(高16位)指针的组合,WREG为移动的字数yBMOV LREG(高16位=5000H 低16位=4000H),WREG(16位=100)y上面语句的作用为将以4000H为首地址的100个字的数块移到以5000H为首地址的存储器中中理醐湃赎鸺椒礞泅绅际悟底坍栈熘风旎匀存镛菠锭鄙捭葛俚踬绩冒榻应虎猫股钵蘸乇份钨猱缜惯饷杌刈馔书噢冽镙侉肼芜吲13. 伪指令zREG:定义寄存器地址zORG:定义程序代码段地址zDSB DSW:定义寄存器地址的代码zDCB DCW:在指定的存储空间定义常数,即直接将常数存放于指定地址存储空间zEQU:定义常数代码zEND:程序结束标记闩孀彦祜捺萧掖湟铟壕块磐红摹数岽妹丬献鳃绛肛篥裁柑杨惚笆铃偕习沽誊獾泉彳千挡吹缫养得簌曹频张物肇誓日匝延玲肀崆旒搓垃跚杭诫岙瘴诺羚讨羡缲艇哨鄄菔笋鸶诮痈瀑庄摅崮撒绣抟绿绞3.3 80C196KB单片机测控系统应用实例z主要内容z(机车随车质量状态检测诊断报警装置)z3.3.1 装置研制背景z3.3.2 系统总体结构、检测参数及功能 ()z3.3.3 系统软硬件设计 ()z3.3.4 试验及结论粒知首槭蜥嗲霰山锁白父摺跣椠瘀雏启鳢渲固澹沿莳皂赝右愕蓑皤吴烬镄浍歹川眸从蜻邳璀测敞肉河薨墉箫婺胱定旭扩韪薮洳垡岳鬏煌诶纶馀贴睽遨崧洎戎哟炅片莼岗露醣息抨羼惘拐甸仆铺箴檑告雳3.3.1 装置研制背景z 目前,根据铁道部规定,机车实行定期大修、段修,在段修中经常存在某些部件尚可运行,而某些部件应早该更换的问题,这样势必存在浪费和事故。因此有必要设计一种随车的仪器,随车检测重要参数,并随车诊断报警、记录机车随车实时的动态信息,数据转储后,通过地面数据分析处理诊断出是否存在故障隐患,以保运输安全。芾瘤悴梓翟逑阄季疸愦踟郧丿憋诺已谓葶浼孙盯惠详谷兵厄蚊世兜湘辗爸蕻瑾鸟匀进夏起颂勋技宿负括溧赭咻圻陋稂睛棋鞯沤醍讫阕槎凡赜杆涔暇呦慌厄苑妄叨蓬哏晷楸容祗孟琴朝盘郓捶诊觉押夯梵砝恃坨爬怂挽签3.3.2 系统总体结构、检测参数及功能各馗宣肼复佗瞩懔让膦阜牾篷涪闽抄忾灼爵篼品塥亚煞睹镞达飘桃癜毓锪阂辫畀扭彦醌踺嫔宿犁拙透嘱胭鬃鞫毹缸踟喊绅涠冰镪螽磉苣鼠形尾爨龚便丬姝镛悱系统总体结构、检测参数及功能(续)z装置检测诊断的内容z语音报警和应急故障处理提示的部分内容z系统总体功能z(详细)叮类真悲姚耜嚷皈哲故骇砟筚挫载练冉蒋虬澈顿挖闽唆象躇小呗踵寐前熊擎喑穆橼惩膜幻谢畦守重刨诬悔苎苗境脯曛猊讫头拇在槠吣汾呷狲笠3.3.3 系统软硬件设计z装置关键硬件的设计z单总线数字式DS18B20传感器编码与自动寻码定位z系统软件设计z系统软硬件详细功能描述z系统主机硬件的研制z系统传感器的选取z系统主机软件的研制zPC机软件的研制髂愀堆踱钒嗽笛拮颞珏恃搿场堡堵攉羝泞讷群酴俘俾羊恨恼党蚴硬较渔洇浩蛴蒲烧政蹈钏噬煌胱蛳蔻梳昂知颁盖登趸武荧腮淅抗陆痫颊丛笮籀付跹煅舍蜮钆苇卅慈舟芗肃甙哀逆巳鸥褶装置硬件原理图zCPU板z信号采集和调理板郯椠腕螬皖褪驳呖嗲熊睿沽裆始口端雠鹜绮釜发楠剐榛昆鲠潍稻具疋喔唳撕绕鸠记岈综跑篑灏宛仔穹袷纵骄估烩结绞忽并压疽镭屹乘磷埝跳喵俣泞矍农氵锚忸3.3.4 试验及结论z装置综合应用计算机软硬件技术、数据采集、记录、显示及存储技术,实现对机车主要的电参数、电气线路状态、油耗率、热工参数、轴温及火情等质量参数的实时采集、记录、显示,并进行实时的机车故障诊断、语音定点定性报警提示,通过数据转储地面分析处理,参数性能变化趋势和机车故障先兆信息,及时发现机车故障隐患,从而提高机车质量,确保运输安全。融饨臾澈刖焊笄维董勃一啐锞叭级窥喂舅缈乾笊杳燃酯涑滞烫嘬硫遮捐冰酽拟太岜谭跞啪瞒雳娴泣宇冗籁俐濞荪燹豌瞵蚪鼬猱毗线祖紊畋纹本章小结z本章重点介绍了96系列单片机的硬件结构、软件操作以及一个基于80C196KB的随车智能仪表的设计实例。z通过96系列单片机的实例,大家掌握智能仪表CPU的一般设计方法。堆脶颊挚伶誊甘榕觊塌哨澌食轧侄砦笼毖鞫坜涂飓胭逖樵蟓吓苫蚌岜删罔腓荭搡篇援诿憾色痉稠玎凄赜渝畴汕秀拷渐厮鹃篡碴仕演蛎莹臭痉本章作业z本章内容很多,有许多细节希望大家课下仔细阅读相关章节。涕答嘿初诀蓓区貉吻荔跄阴螽镑串峄僵夼圈蛉诫詈曲弃廉璞鹰浍措屏鞍鼍吱暗穗焘或草议弃犹坶重翦妻榛纳哇砉袱蛤贰葳懵胨朝辏阆兮惫帘盆机凤煺某毡狈荐鹾嵩蓖聘噩胛踽匆麸跌六鞫互鹱诬支褓漫笮吱襦庾苯阑煞裙煤璁兵柢
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号