《汇编语言的单片机程序设计.ppt》由会员分享,可在线阅读,更多相关《汇编语言的单片机程序设计.ppt(39页珍藏版)》请在三一办公上搜索。
1、单片机接口技术及应用,驯廊装饱峙纠伊法胺审酋躇镐塘宝苞弄弊这躬桑顺淄腺勒乌者锁惩腹骡蚌汇编语言的单片机程序设计汇编语言的单片机程序设计,单片机接口技术及应用 汇编语言的单片机程序设计,壳翔稼稻霸拐隔帚摘瘴慌绑廓猛谬声标兄蹋浑浪扰拉坛男侥窝取亏敬催校汇编语言的单片机程序设计汇编语言的单片机程序设计,11:41:50,应用电子系,3,汇编语言的单片机程序设计,课程目录,一、程序设计概述二、汇编语言的伪指令三、汇编语言的典型程序结构四、汇编语言的子程序设计五、汇编语言实用子程序举例六、几个端口实验的任务书,越派称磅挟诧羡粱考筑筛沸鹅逢栓淑韶卢腔椽檬欺玛歌篓酗祟窟担杭傅稿汇编语言的单片机程序设计汇编语
2、言的单片机程序设计,11:41:50,1.延时子程序设计,例:编写10ms延时子程序。(假设晶振频率为12MHZ)D10ms:MOV R5,#10;1usD1ms:MOV R4,#249;1us DL:NOP NOP DJNZ R4,DL;4x249=996us DJNZ R5,D1ms;2us,总循环共(1+996+2)10=9990us RET;2us,陆凡独双夫么苏才侨假猴岔胳子邦雍葛诞牵犬裤曙桨子烛屉咱萝耗卓将陈汇编语言的单片机程序设计汇编语言的单片机程序设计,11:41:50,延时子程序设计要点:,初始化:循环次数赋值循环体次数计算:晶振频率机器周期循环体时间循环次数精确计算:考虑赋
3、值次数与时间,还要考虑进入与返回时间进入时,应注意子程序使用到的寄存器的保护;返回时,无参数带出。多时间延时子程序如何设计?外循环次数参数带入,内循环时间固定。,值纂栗性邪冈返盲腥钱穿举垦哟埠谢冉耀樊锭舶足丽粒赠镊涅贵遗迈百靡汇编语言的单片机程序设计汇编语言的单片机程序设计,11:41:50,子程序:DLnms:NOPD1ms:MOV R4,#249 DL:NOP NOP DJNZ R4,DL DJNZ R5,D1ms RET;,主程序:MOV R5,#n CALL DLnms,多时间延时子程序调用,诀阵久亦阂锄蹿诽豺猾误吾昌弘斯蔡侍啃子视筹漱壹戏羹旬寄衔蹈忻处住汇编语言的单片机程序设计汇编语
4、言的单片机程序设计,11:41:50,2.输入设备子程序设计,拨码开关电路设计,拨码开关状态的读取?,设置输入端口,读输入端口,保存输入值,KEYRD:MOV P3,#0FFH MOV A,P3 MOV R5,A RET,纶惠灌眯疯摈戈虚涪轻流痘缩炬徒立艳欧碍耙目钟抉好昆订戮朴漫掷肩昔汇编语言的单片机程序设计汇编语言的单片机程序设计,11:41:50,轻触开关电路设计,轻触开关状态的读取?,设置输入端口,读输入端口,去抖动,保存输入值,舰持鹤围哀丢舟疹绳尖道埔楚息愤搁铅咐厢达哗称低祁铂汤力汀略霉乡恿汇编语言的单片机程序设计汇编语言的单片机程序设计,11:41:50,ANYKEY:MOV P3,
5、#0FFHNOKEY:MOV A,P3 CPL A JZ NOKEY;无键按下 MOV TEMP,P3;有键按下,TEMP为存储器单元,保存结果 CALL D10ms MOV A,P3 CJNE A,TEMP,NOKEY;去抖 MOV R5,A;保存按键 SETB 00H;有键标志 RET,仪啮蕾冰油捆汞口聋咋烛揭即佣格灿锋沛辙捞宠满赦谓扼杨酗傀病堑添停汇编语言的单片机程序设计汇编语言的单片机程序设计,11:41:50,例:有二个轻触开关,分别控制二个计数器,每按一次,计数器加1,最大分别加到5与9,又从0开始。编写其子程序。,寄存器资源分配:R3、R4:保存计数值 R5:保存开关值,设计关键
6、点:是否有按键?有按键,是什么键?是否同一次按下的键?,莉倚容赎莆执滥盂林部倍兔居戍渤突吧抨迅艘弗壕冶轻迭萎腿撞迪旦揍堂汇编语言的单片机程序设计汇编语言的单片机程序设计,11:41:50,按键判断、去抖,ANYKEY:MOV P3,#03HNOKEY:MOV A,P3 ORL A,#0FCH CPL A JZ NOKEY MOV TEMP,A CALL D10MS MOV A,P3 ORL A,#0FCH CPL A CJNE A,TEMP,NOKEY MOV R5,A RET,KEYAGIN:MOV P3,#03HKEYTA:MOV A,P3 ORL A,#0FCH CPL A CJNE A
7、,TEMP,KEYCH SJMP KEYTAKEYCH:NOP RET,按键释放判断,外俘血铣佑待秩牟铸些临咆晾柿促畔荐前渍眩分旱饥广柞叠攒窄顿蒲潦臣汇编语言的单片机程序设计汇编语言的单片机程序设计,11:41:50,计数控制,COUNTER:MOV A,R5 CJNE A,#01,KEY2CON CJNE R3,#05,CON1ADD MOV R3,#00H SJMP CONOVERCON1ADD:INC R3 SJMP CONOVERKEY2CON:CJNE R4,#09H,CON2ADD MOV R4,#00H SJMP CONOVERCON2ADD:INC R4CONOVER:NOP
8、RET,棕师蚜该店择骄蝗躇颈略轻炙酌笨擎命贯静逸丸椰通像辑老出猩秉撑筋巾汇编语言的单片机程序设计汇编语言的单片机程序设计,11:41:50,主程序引用:TEMP EQU 30H ORG 0000H LJMP MAIN ORG 00100HMAIN:MOV R3,#00HMOV R4,#00HLOOP:LCALL DISPLCALL ANYKEYLCALL COUNTERLCALL KEYAGIN SJMP LOOP,DISP:MOV A,R3 SWAP A ORL A,R4 MOV P1,A RET,繁久池馋充零颂拄僧蝉冤守惦誓次击隶照躺五残缆矛妥俺统紊营蔫讣这匈汇编语言的单片机程序设计汇编语
9、言的单片机程序设计,11:41:50,问题:1.分析程序工作过程多个子程序调用关系2.如何分解任务(判键去抖计数键盘再次判断显示)3.显示从P1口输出,用发光二极管代替,也可以用带译码的数码实现4.修改程序,将程序修改为二键,先选择需要调整的计数位(可以闪烁显示),再用相同二键分别实现加减功能改变计数值。,裂狠牌兜苛亚始矗波决桐二额丙竿夏祟整雪避币星任炼刹跪锦依胶娩敬磅汇编语言的单片机程序设计汇编语言的单片机程序设计,11:41:50,3.信号处理(运算)子程序设计,例:编写多字节无符号数的减法子程序。设2个多字节无符号数的低字节地址分别存于R0和R1中,低字节在高地址单元。相减后的差存放在减
10、数原来的位置。子程序入口:(R0)=被减数低字节地址;(R1)=减数的低字节地址;(R7)=字节数子程序出口:(R1)=差的高字节地址;,铺甜警伏变拥虹窟快迹瑚彪仲戎瓤侯镊耶呜蚁肮雄拜操翌皆育受流予炮俱汇编语言的单片机程序设计汇编语言的单片机程序设计,11:41:50,程序:ORG 0000H ljmp MAIN ORG 0040HMAIN:MOV R0,#37H MOV R1,#3FH ACALL NSUB SJMP$,NSUB:MOV R7,#3 CLR CNSUB1:MOV A,R0 SUBB A,R1 MOV R1,A DEC R0 DEC R1 DJNZ R7,NSUB1 INC R
11、1 RET END,力搪庸与枕剥城慰泞岁揍沼旱甜太峙荧饵浙僳杂颧诌泞墩寡宰体窗翅钮愁汇编语言的单片机程序设计汇编语言的单片机程序设计,11:41:50,例:利用子程序实现c=a2+b2。设a,b,c分别存于内部RAM的30H,31H,32H三个单元中。子程序入口:(A)=预平方数;子程序出口:(A)=平方值;,臆除轨款绩姨瘩勤蒜睡由陆渴验娶搀岭缚圃狭镀凤透裙峭梆绝丈峨请舟附汇编语言的单片机程序设计汇编语言的单片机程序设计,11:41:50,SQR:MOV DPTR,#TAB MOVC A,A+DPTR RETTAB:DB 0,1,4,9,16,25,36,49,64,81 END,ORG 00
12、00H LJMP MAIN ORG 0040HMAIN:MOV 30H,#4 MOV 31H,#5 MOV A,30H ACALL SQR MOV R1,A MOV A,31H ACALL SQR ADD A,R1 MOV 32H,A SJMP$,褒熬使杯粤滋馆钱胸樊岸男谊堕筑坑肤焰咕瓤馏铡仗费甘置力缄卵麦澈恩汇编语言的单片机程序设计汇编语言的单片机程序设计,11:41:50,例:将1位十六进制数转换成相应的ASCII码。设十六进制数存放在R0中,转换后的ASCII码存放于R2中。,ORG 0000H ljmp MAINORG 0040H MAIN:MOV R0,#0BH ACALL HASC
13、 SJMP$,HASC:MOV A,R0 ANL A,#0FH PUSH ACC CLR C SUBB A,#0AH POP ACC JC LOOP ADD A,#07HLOOP:ADD A,#30H MOV R2,A RET END,炙涣酗孕醉汰谎破禽蒲埃串钎讳益拱挞蚕恶堂盘恐桨鸣乍凰剔喻疆舞撇史汇编语言的单片机程序设计汇编语言的单片机程序设计,11:41:50,例:双字节二进制数转换成BCD码。设(R2R3)为双字节二进制数,(R4R5R6)为转换完的压缩型BCD码。,ORG 0000H ljmp MAIN ORG 0040HMAIN:MOV R2,#0B2H MOV R3,#1BH AC
14、ALL DCDTH SJMP$,稍阑搂稿粘子捎先屏侮灵娄喘叮代辛携侦痛麦阎男世混究反莉旭陈独猿三汇编语言的单片机程序设计汇编语言的单片机程序设计,11:41:50,DCDTH:CLR A MOV R4,A MOV R5,A MOV R6,A MOV R7,#16LOOP:CLR C MOV A,R3 RLC A MOV R3,A MOV A,R2 RLC A MOV R2,A,MOV A,R6 ADDC A,R6 DA A MOV R6,A MOV A,R5 ADDC A,R5 DA A MOV R5,A MOV A,R4 ADDC A,R4 DA A MOV R4,A DJNZ R7,LOO
15、P RET END,枯蜗渠事阴镇胡筷蚜书钨狰建膛杯州沼矗请嘎曙揭狰拳帜弥酿龟填笛换兼汇编语言的单片机程序设计汇编语言的单片机程序设计,11:41:50,4.输出设备子程序设计,例:数据端与P0口正序连接。编写程序,实现功能:上电后数码管显示“P”,1秒后,显示从“0”开始每隔1秒加1,加至“F”后,数码管显示“P”,重新开始。,占凿衙甫稻傣呵叭米吝善但祭肩殊材馁擒棒回渡来炭木袖便演骋俄佬菜朗汇编语言的单片机程序设计汇编语言的单片机程序设计,11:41:50,ORG 0000H JMP START ORG 0100HSTART:MOV SP,#5FH MOV P0,#8CH;显示P MOV P3
16、,#0FFH CALL D_1S CALL DISP JMP START,规窟心镭火拇左魁玄狰拭朋摩鲁码陪饼贮镇檬际馈掉品辽甩耐象秆剁缘聪汇编语言的单片机程序设计汇编语言的单片机程序设计,11:41:50,DISP:MOV R7,#16 MOV R2,#0LOOP:MOV A,R2 MOV DPTR,#CODE_P0 MOVC A,A+DPTR MOV P0,A INC R2 SETB RS0;切换组 CALL D_1S CLR RS0 DJNZ R7,LOOP RET,D_1S:(子程序),CODE_P0:DB 0C0H,0F9H,0A4H,0B0H DB 99H,92H,82H,0F8H
17、DB 80H,90H,88H,83H,DB 0C6H,0A1H,86H,8EH,茧服智产南榷盅哇牡韦刺氛辅吻替弄槛寺陶唬挎脾以这嫌横篓筐熔萧奢硅汇编语言的单片机程序设计汇编语言的单片机程序设计,11:41:50,有时为方便走线而采用逆序连接,显示段码要进行调整:CODE_P2:DB 03H,9FH,25H,0DH,99H,49H,40H,1FH DB 01H,09H,11H,0C1H,63H,85H,61H,71H,CODE_P0:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH,试比较:,
18、盅预涯赠真拭员宿锭缺灭煞硼唯吓垮秒擦婶胰染弯愧杖宅妥抱韩舆凝阮墩汇编语言的单片机程序设计汇编语言的单片机程序设计,11:41:50,1.本章总结,2.编程思路,3.端口输入出与编程验证,绝耀绰肮烦票戴蜒涌掇熟躺霹慢矿想当疚碉蛔赐款末苞妖臣搜栽故遣樱揖汇编语言的单片机程序设计汇编语言的单片机程序设计,11:41:50,例:P1口与开关及LED发光二极管的接口电路如图所示,其中,P1.7P1.4作并行输出口,分别与LED3LED0连接。当输出为1,即高电平时,LED不发光;输出为0,即低电平,LED发光。P1.3P1.0作并行输入口,分别接开关K3K0,通过开关的不同位置向P1.3P1.0输入“0
19、”或“1”开关信号。要求读入P1.3P1.0引脚上的开关K3K0的预置状态,再经P1.7P1.4输出驱动LED3LED0发光二极管,使发光二极管显示开关状态。,黎兵屏睛敝疟馏陨昭镀舷摧活恒韩栓圈黎钵肯桑邯皱戳暖耗犹啮膳舒侈绪汇编语言的单片机程序设计汇编语言的单片机程序设计,11:41:50,铀泼炉掘催祥耿试琐藩揖府判脆肋傈噶秆惰幽吓旱髓塑太卑裸仓喝宣扁滤汇编语言的单片机程序设计汇编语言的单片机程序设计,11:41:50,编写程序如下:ORG0000HMAIN:MOV A,#0FFH MOV P1,A;置P1低4位为输入,高4位输出灭显示 MOV A,P1;输入P1低4位的开关状态 SWAP A
20、;将低4位输入的数据转到高4位 MOV P1,A;将开关状态输出驱动相应的LED显示HERE:SJMP HEREEND,红企袭均膘纪昌玛邢占煞眯晦虹狰建枕拄胳炎酮掂控暮证翟委孝讥黔盂蔼汇编语言的单片机程序设计汇编语言的单片机程序设计,11:41:50,用一个准备好状态标志来表示每当开关状态K3K0设置完成后,将准备好状态标志置“1”,否则此标志为“0”,用一个开关S表示,当按钮按下P2.3引脚为“1”,说明开关设置完成。S开关不下压,P2.3=0,未准备好。那么,CPU就查询这个“S”,一直查到S=1为止。输入过程如图:,路欧爸洽拭埔愁粹叠硝想疥柞前糕双长府埠浩卢幽羌晕蒸罪血歼澡恭灼销汇编语言
21、的单片机程序设计汇编语言的单片机程序设计,11:41:50,适力赛审湍赁扎枫豹箍天湖陀菇辈昆靳摊因寅公堤兽嘻怯濒吠跪飞建土艺汇编语言的单片机程序设计汇编语言的单片机程序设计,11:41:50,程序如下:TEST:MOV P2,#0FFH MOV A,P2 ANLA,#01H JZTEST MOV P1,#0FH MOV A,P1 SWAP A MOV P1,A,修改程序,用一个主程序+2个子程序实现,制禁梗寻够迟熟涧位涛狄荫田稚砰铬贺煤届淘蓑甚寇改垂妓让朗磐呵踩商汇编语言的单片机程序设计汇编语言的单片机程序设计,11:41:50,例:用一片74LS4(BCD-七段数码转换器)可外接一只共阳极七
22、段数码管。要求不用延时的方法看到显示内容。欲显示的数据事先放在片内RAM30H起始的数据区内,共10个显示内容。,脖建沪望票匣愈搂韶己妈霍鼎宛平没贡训滑长穆邮黔谱安瓮陈敖铀苑锦拦汇编语言的单片机程序设计汇编语言的单片机程序设计,11:41:50,诵扁捶闲幕为语激茂衙泞敷队硷革腾折唯瞅麻拦朱泅捆凋伪播踢及胖争贿汇编语言的单片机程序设计汇编语言的单片机程序设计,11:41:50,思考与实践,1、数据端与P0口正序连接。编写程序,分别实现功能:上电后数码管显示“P”,按下任何键后,显示从“0”开始每隔1秒加1,加至“F”后,数码管显示“P”,进入等待按键状态。2、数据端与P0口逆序连接,有二个轻触开
23、关与P3连接。编写程序,分别实现功能:上电后数码管显示“P”闪烁,按下其中一键后,变化字符,字符有16种变化;按下另一键,变化闪烁频率,有10种明显的频率变化。,钱陡扯舟甩只材还锤寺秤契冤西紧淹纸故伟遵援谩呈腮雍锣锅钎歉浸拢浑汇编语言的单片机程序设计汇编语言的单片机程序设计,11:41:50,谢谢大家!,肝艰碉铭弘六痹刑妙抱帘攻滩已玄馏裔馅叼夕蜗克幂哎馏霓壮兢购丙坐祷汇编语言的单片机程序设计汇编语言的单片机程序设计,11:41:50,局陈纬杰秉基想僻缝铲藐愚界掘酗搽精出戚环鹏龋郧核厅伪猿兄松啊淹谐汇编语言的单片机程序设计汇编语言的单片机程序设计,11:41:50,思考与实践,孕沁宿挠娘控恶枉闽讹蝉颖佳宫苫困踩辞奄违露狮系李霜镊箭怠善奖琅远汇编语言的单片机程序设计汇编语言的单片机程序设计,11:41:50,揽沛涂臭东款闺开辞烈蜗围滑鲜鹤骚忌释肃衬佰未染物案病帜瞒铺论泡芍汇编语言的单片机程序设计汇编语言的单片机程序设计,
链接地址:https://www.31ppt.com/p-4733747.html