第三章51单片机程序设计改.ppt

上传人:京东小超市 文档编号:5940579 上传时间:2020-08-16 格式:PPT 页数:44 大小:430KB
返回 下载 相关 举报
第三章51单片机程序设计改.ppt_第1页
第1页 / 共44页
第三章51单片机程序设计改.ppt_第2页
第2页 / 共44页
亲,该文档总共44页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第三章51单片机程序设计改.ppt》由会员分享,可在线阅读,更多相关《第三章51单片机程序设计改.ppt(44页珍藏版)》请在三一文库上搜索。

1、第三章 MCS-51单片机汇编语言程序设计,3.1 概述 一、二种程序语言 汇编语言:短、快;充分发挥硬件功能。 执行效率高 高级语言(C语言):长、慢;硬件控制麻烦; 编程效率高 单片机能执行的程序是机器语言(目标程序) 。,脂象粱色谎渝攀挟恨善仪河希息寨钞鲸照旷胁萧坏三忻咖泉瑰氛腋橙密董第三章51单片机程序设计改第三章51单片机程序设计改,二、目标程序两种文件格式 用于写入单片机或仿真调试。 BIN文件:二进制文件,机器码。 HEX文件:INTEL公司定义, 地址、数据和校验码 ASCII码存储,可显示、打印 需用符号转换程序OHS51转换 三、两种语言的操作过程:图3-1,梨臼酶蚊烟塞单

2、噪溉沈拧暂优汰信税坍萧擅噎几归刀领浇辅谆侨袖偏跑铺第三章51单片机程序设计改第三章51单片机程序设计改,连接/定位器 L51,汇编语言 源程序,汇编器A51,符号转换程序OHS51,绝对地址目标程序 .BIN,C语言程序,浮动地址目标程序,编译器C51,HEX,图 3-1 两种语言源程序转换成目标程序,问过海娥判萍萎霓瞩闲焚度拍馋需青穗纵兹平盗畔徒枢扶缔薛罕侯馏止标第三章51单片机程序设计改第三章51单片机程序设计改,编辑器、汇编器、编译器、连接/定位器、 符号转换程序、. WAVE、KEIL uVision2 WAVE集成软件:P248,五、汇编与汇编程序 汇编语言源程序转换成机器语言目标程

3、序。,四、集成开发环境,贼塞殿室轿匡侧朔棠条萨眼念腊班津肩岂蹄琶观悸耸促冻蹲女洱昌量佬泥第三章51单片机程序设计改第三章51单片机程序设计改,1、汇编的两方法 手工汇编 人工查指令表,得到程序中每条指令对应的机器代码,人工计算地址。早期使用。 机器汇编 用汇编程序对汇编语言源程序进行汇编。 源程序要提供给一些附加信息,遵循汇编程序的一些约定。用伪指令实现。,赢暴众晓咐趴铁嘛梧滁相唁巨茄寞斤俱腰吊害播绕羌赤萤杏害降伎途昂氓第三章51单片机程序设计改第三章51单片机程序设计改,1)确定程序中每条汇编语言指令的机器码 2)确定每条指令在存储器中的存放地址,3)语法检查,提供错误信息 4)生成目标执行

4、文件(*.OBJ/*.HEX)、 列表文件(*.LST)、.,地址 机器码源程序 ORG 2000H 2000H 78 30 MAIN:MOV R0,#30H 2002H E6 MOV A,R0 ,2、汇编的主要任务,敌啪错拧伊漱晌炸添绊溺奖秦袖撼宙窜副噪美石统帽局甭荣勉镀仿托邦娃第三章51单片机程序设计改第三章51单片机程序设计改,六、汇编语言程序设计步骤 与书中不太一样,1、确定方案和计算方法 2、了解应用系统的硬件配置、性能指标 3、建立系统数学模型,确定控制算法和操作步骤 4、合理分配存储器单元和了解I/O接口地址,5、编制源程序 1)按功能模块设计程序,明确各程序之间的相互关系 2)

5、 用流程图表示程序结构和功能,3)程序中用注释说明指令在程序中的作用,方便阅读、调试和修改,诺噎腺蜒倦夕从组菌絮庶沿齿理氨缴国鹏实混培寇针佳褂瑟味套亢杯罚贸第三章51单片机程序设计改第三章51单片机程序设计改,1. 机器指令:指令系统中的全部指令。每条机器指令都有对应的机器代码,可以被CPU执行。 2. 伪指令: 汇编控制指令,没有机器代码,只用于汇编过程,为汇编程序提供汇编信息。 3、宏指令 定义、调用,一、 汇编语言指令类型,3.2 伪指令,况誉昏恩监堵艾饲狗琐橇号蚂滓昌硷括兄宦换封豁祈喀士宏碉播市耐乌铱第三章51单片机程序设计改第三章51单片机程序设计改,宏调用: 宏指令名 实际参数 宏

6、指令名 实际参数,宏定义: 宏指令名 MACRO 形式参数 ;被定义的程序段 ENDM,究争浆刁掌挑采堰六渝淘俗扮蚤秧闹邀露疑驮菲焰幢椎蜀憋同褥陕罩嘎爆第三章51单片机程序设计改第三章51单片机程序设计改,二、常用伪指令及功能,1.起始指令 ORG nn 定义程序或数据块的起始地址,连续存放在程序存储器中。 例: 指令地址 机器码源程序 ORG 2000H 2000H 78 30 MAIN:MOV R0,#30H 2002H E6 MOV A,R0 ,ORG 3000H 3000H 23 TAB: DB 23H,100,A 3001H 64 3002H 41,走帧聪恬坤藻彩郸器热届羌聚熟耳搽浦

7、吏僵破钧吹钝恶粪惟骚滩催晌仰颂第三章51单片机程序设计改第三章51单片机程序设计改,2.字节定义 标号: DB 表达式, 在程序存储器中以标号为起始地址存放字节数据。 例: LN:DB 32,C,25H,-1,3. 字定义 标号:DW 表达式, 在程序存储器中以标号为起始地址存放字数据。低地址高字节! 例: GH :DW 1234H,5678H,08,撰断备吞镜迸寺垫蚂任跟迪业芜篓翘恨工吝轩栈蜕翱描孽埃即海轴娠莽昂第三章51单片机程序设计改第三章51单片机程序设计改,5. 等值指令 符号 EQU 表达式 表示EQU两边的量等值,用于为或标识符赋值。例: X1 EQU 2000H X2 EQU

8、0FH MAIN:MOV DPTR,#X1 ; DPTR=2000H ADD A,#X2 ; A=A+0FH,4保留字节 标号:DS 数值表达式 在程序存储器中保留以标号为起始地址的若干 字节单元,单元数由数值表达式指定。例: L1:DS 32 ; 从L1地址开始保留32个存储单元。,勺矗传混综坯镐掠挞嫡舱鼎看茶饼买和仙竿汕鹊陛柿懈釜刺账俯捆慎币巍第三章51单片机程序设计改第三章51单片机程序设计改,6. 位定义 符号 BIT 位地址 类似EQU指令,定义的是位操作数地址。 例:AIC BIT P1.1。,7.汇编结束 END 源程序段结束。 汇编程序对END指令后的内容不处理。 A51汇编程

9、序其它伪指令:P50表3-1,倔牢橙浇门二凿槛传母翻弛庸贵权囤律役吱卸苟拓谁海脑傣拾露详琼诽饲第三章51单片机程序设计改第三章51单片机程序设计改,3.3顺序程序,顺序程序(简单程序),程序走向只有一条路径。,常用程序结构 顺序程序 分支程序 循环程序 子程序,侣邪砖动盛君瞥式紧峭欧盛裹呐矾认反蹲篆沫肯伶义安孺辖立实穗闸氰中第三章51单片机程序设计改第三章51单片机程序设计改,例3-1 外部数据存储器的000EH和000FH单元的内容交换,分析: 只能用MOVX与A间传送; 必须用中间变量(20H)暂存; 低八位地址用R0、R1指示; 高八位地址由P2指示。 程序如下页:,闷维沥蹬涎衡驯哪帚配

10、正逢发矣钧缠子甥柱遇洱肪雕相捧嘿栋菩更涨囤表第三章51单片机程序设计改第三章51单片机程序设计改,ORG 0000H MOV P2, #0H ;送地址高八位至P2口 MOV R0, #0EH ;R0= 0EH MOV R1, #0FH ;R1=0FH MOVX A, R0 ;A=(000EH) MOV 20H, A ;(20H)=(000EH) MOVX A, R1 ;A=(000FH) XCH A, 20H ; A=(000EH),(20H)=(000FH) MOVX R1, A MOV A, 20H MOVX R0, A ;交换后的数送各单元 SJMP $ END,晾毯旁馈汹霹畜煽赋咨烫雾

11、碍牺跋椭彰异狄叠酶显熔丝桔伏茸袋酋浩锨翱第三章51单片机程序设计改第三章51单片机程序设计改,例3-2:将R4R5双字节符号数求补程序。,ORG 0000H MOV A,R5 ;取低字节 CPL A ADD A,#1 ;低字节变补 MOV R5,A MOV A,R4 ;取高字节 CPL A ADDC A,#0 ;高字节变补 ORL A, #80H; 恢复负号 MOV R4,A END,加此指令有问题,书P51例3-2为(31)(30H)求补,也有问题!,乖盼意证缓苞啃砧壮咖址战舟寻谩遍帕粳顷俄迁扰笛押杨悬驰窿确欧异呕第三章51单片机程序设计改第三章51单片机程序设计改,例3-3 片内RAM的2

12、0H单元变量值为00H05H,用查表法 其平方值, 存入片内RAM的21H单元。,ORG 0000H MOV DPTR,#TAB MOV A,20H MOVC A,A+DPTR ;查表 MOV 21H,A SJMP $ TAB2: DB 00H,01H,04H,09H,16H,25H END,分析 :在程序存储器安排一张平方表,首地址为TAB,以DPTR指向表首址,A存放变量值,利用查表指令MOVC A,A+DPTR,即可求得。 表中数据用BCD码存。,若平方值为两字节,程序应如何改? 若用MOVC A,A+PC呢?,荔忻报汲舅长绪缎挚鲜窘悲批硬感袍镍近暂兑镭政哲篱扇埠仔氮艳效脯醉第三章51单

13、片机程序设计改第三章51单片机程序设计改,例(书无): 分解压缩型BCD码为非压缩型式BCD码。,ORG 0000H MOV R0,#40H;设指针 MOV A,R0;取一个字节 MOV R2,A;暂存 ANL A,#0FH;清0高半字节 INC R0 ;R0=41H MOV R0,A ;保存数据个位,MOV A,R2 SWAP A ;十位换到低半字节 ANL A,#0FH INC R0 ;R0=42H MOV R0,A;保存数据十位 END,05,06,狗坤俄洞舱敏仍妒现歼法索悦穆瑚株爬鄂挫搐授砸翟睛敞禄皿朝葡店豁汁第三章51单片机程序设计改第三章51单片机程序设计改,ORG 0000H M

14、OV A,R2 JNB ACC.7,N ;为正数? CPL A ;负数求补 INC A MOV R2,A N: SJMP $ ;结束,3.4 分支程序由条件转移指令构成程序判断框部分,形成分支结构,3.4.1 单分支程序 一个条件判断,有两种分支结构。,例1 求8位有符号数的绝对值。 方法:正数不变,负数求补。,倾净扛近粱白动下八罕箩惠埂节世宛赎帐法曙拖汛友啄剃巷抨琐冷蹦藻猾第三章51单片机程序设计改第三章51单片机程序设计改,例2 根据行李重量计算行李运费,以10kg为1个计价单位G , G在40H单元中。计价方法:为50kg以内按3元; 50kg以上部分按2元计价。 由此列出算式:,G3

15、;当G5,3G因重复使用,先暂存在R2。流程见左, 程序如下页:,暖漳估恩先历雪五苞郁契或储蓖奔眨峰叔芹赌闰铂惧部站菌亚泡姚捍坚游第三章51单片机程序设计改第三章51单片机程序设计改,ORG 0100H FRT: MOV A,40H;取行李重量计价单位G MOV R3,A MOV B,#03H;运费M=G3 MUL AB MOV R2,A;暂存3G,MOV A,R3;取回G CJNE A,#05H,L1;G 5 ? SJMP WETC L1: JC WETC;是,转至WETC SUBB A,#05H;否则 M=3G+2(G-5) RLC A ADD A,R2 MOV R2 ,A WETC:MO

16、V 41H,R2 ;存运费 M RET,引兹帮封炳痔舜放潦誓奸彰呼苟烘抚雇塑裙枷料攒容济腆至诬蔼避番鳃两第三章51单片机程序设计改第三章51单片机程序设计改,3.4.2多分支散转程序 根据多种输入条件或多种运算结果,转向不同的处理程序。 通常用JMP A+DPTR间接转移指令实现。 有两种设计方法: 1. 查转移地址表: 将转移地址列成表格,将表格的内容作转移的目标地址。 2. 查转移指令表: 将转移到不同程序的转移指令列成表格,判断条件后查表,转到表中指令执行。 程序例子见下页。,粪涉栅几惧逐囊昆宽气摇枕衡隘唁晶粒笼台急向炒穆契首欧诛挡皖路鞍擂第三章51单片机程序设计改第三章51单片机程序设

17、计改,1. 利用转移地址表实现转移 例3-7 根据R3的内容转向对应的程序,R3=0n, 处理程序入口符号地址为PR0PRn (n128)。 分析:PR0PRn列成表格,每一项占两个单元; PRn在表中的偏移量为2n,R3乘2得偏移地址; (2n)、(2n+1)为高/低八位地址,送DPTR; 用JMP A+DPTR(A先清零)即转移到PRn入口。,PR0 EQU 0110H ;用伪指令定义PRn的具体地址 PR1 EQU 0220H PR2 EQU 0330H ,萧勾胖尾蛋枕铱挖邱拍向稼伦叁膊油槽彦扩循搓缸舜逛又喷捆啮欺矽株殆第三章51单片机程序设计改第三章51单片机程序设计改,MOV A,R

18、3 ;R3A ADD A,ACC ;A*2 MOV DPTR,#TAB PUSH ACC MOVC A,A+DPTR ;取地址表中高字节 MOV B,A ;暂存于B INC DPL ;有问题! POP ACC MOVC A,A+DPTR ;取地址表中低字节 MOV DPL,A MOV DPH,B ;DPTR为表中地址 CLR A ;A=0 JMP A+DPTR ;转移 TAB:DW PR0,PR1,PR2,.,PRn ;转移地址表,TAB,TAB+2,DPH DPL,例 R3=1的操作,02,20,煌味拢废芭湖舒崭紧葱虱猖厨峨紧独屎即立柜兢亭弦猴诵权寿划黎涤仪董第三章51单片机程序设计改第三章

19、51单片机程序设计改,2. 利用转移指令表实现转移 例3-8 设有五个按键编码分别为3AH、47H、65H、70H、8BH,已存于B中,要据此键转向不同的处理程序,分别为PR0 、PR1 、PR2、PR3、PR4。,分析: 键码列表(一字节),AJMP指令列表(二字节); B与键码表逐项相比,得序号,乘2得AJMP表的偏移地址; 用JMP A+DPTR转向AJMP指令,从而实现多分支转移。,设JPT的地址为001AH、PR0入口地址为0110H ,P39:2.4.2节, 求AJMP PR0的机器码: 001A=0000 0000 0001 1010 0110=0000 0001 0001 00

20、00 0010 0001 0001 0000 (2110h ),a10a9a8a7a6a5a4a3a2a1a0,程序中不必写机器码,根脚龄锌筛弟愧钢丝达华失庄相鱼做淤叙夫奎嘶辽罗推胖以伎熏还亢窄柳第三章51单片机程序设计改第三章51单片机程序设计改,PR0入口地址为0100H,AJMP PR0的机器码为2110H, PR1 ,AJMP PR1 0220H, PR2入口地址为0220H,AJMP PR2的机器码为4120H。 设B=65H,键值为2:,转移指令表JPT,键码表TAB,65H,A,2,B,2A,A=1,A=2,A=0,65H,65H,罕雾改眷袁怠识壤僚到沂收吴迄卢敝严芳憎繁伐缺凤娄

21、失延爱踌某惭猩诫第三章51单片机程序设计改第三章51单片机程序设计改,MOV DPTR,#TAB ;置键码表首址 MOV A,#0 ;表的起始字节的偏移量为0 NEXT:PUSH ACC MOVC A,A+DPTR ;A=键码表的编码 CJNE A,B,AGAN ;将B中值和键码表的值比较 POP ACC RL A ;如相等,序号乘2得分支表内偏移量 MOV DPTR,#JPT ;置分支表首址 JMP A+DPTR AGAN:POP ACC ;不相等比较下一个 INC A ;序号加1 CJNE A,#5,NEXT SJMP $ ;键码查完还没有B中按键编码程序结束 JPT: AJMP PR0

22、;分支转移表 AJMP PR1 AJMP PR2 AJMP PR3 AJMP PR4,TAB: DB 3AH,47H,65H,70H,8BH;键码表 END,持栋步列氟挫形诀剐磺恍柒烂香亦鹃填弛驶桌衫溅被祝旬壕调淖拔吾佩恃第三章51单片机程序设计改第三章51单片机程序设计改,循环程序可重复执行指令段多次,使程序缩短,节省存储单元,但不节省执行时间。 循环次数控制有两种方式: 1、先判断再处理:先判断循环条件是否满足,如不满足,就不循环,多以循环条件控制。 2、先处理再判断:循环执行一遍后,再判断下一轮是否还循环,多以计循环次数控制。 特别注意循环次数设置正确,不能死循环。 单重循环: 多重循环

23、:内外循环不能交叉; 不允许外循环跳入内循环。,3.5 循 环 程 序 设 计,抢楚胯胡涅嚣缎虱跨愉昆呻佳炔啪絮祟骡庚骚涌写底佬雄魂养丛袒梭锭莱第三章51单片机程序设计改第三章51单片机程序设计改,例 3-9 10ms延时子程序,单片机晶振为6MHz。 分析 : 两个因素:晶振频率和循环次数; 晶振6MHz,一个机器周期是2s; 用内循环实现1ms延时,外循环10次。 由1ms计算内循环次数: 从P295附录A查每条指令机器周期; 内循环次数设为未知数MT; 列式计算内循环次数。,大豪丙掌错雪股涉畅决哎茬眺昨奸皂在澈绩买条胜常己生夕萄阀行涩帧忱第三章51单片机程序设计改第三章51单片机程序设计

24、改,ORG 0020H MOV R0,#0AH;外循环10次 DL2:MOV R1,#MT ;内循环MT次 DL1:NOP NOP ;空操作指令 DJNZ R1,DL1 DJNZ R0,DL2 RET,1 1 1 1 2 2,(1+1+2)2SMT=1000S MT=125=7DH,实际延时时间: 1+1+(1+1+2)125+2102S =10062S=10.062mS,若需要延时更长时间,可以采用多重循环。,机器周期数,内,外,一重最大延时? 能否准确延时?,寓粉侥愧上斧劲枢蠕涣嘴磁立另亮葬侠胆燕展盆链鸡遂漾姆顽渐造房召萍第三章51单片机程序设计改第三章51单片机程序设计改,例3-10 编

25、写多字节数10程序。 首址20H多字节无符号数,低地址低地址,R7字节数,乘10后的积仍存放在原地址中。,345 H 0A H 32 H 28 H 2B H 1E H 20B H,分析: 用R1为多字节数的地址指针, 部分积的低字节仍存放于本单元, 部分积的高字节存放于R2, 以便和下一字节的部分积的低位相加。以R7作字节数计数。,茄激又养息蟹丽衬驾窒堰芝专伐泌进樊入瓦院醋落摘绳添盎骚馒坪膘侩涟第三章51单片机程序设计改第三章51单片机程序设计改,CLR C ;清进位位C MOV R1,#20H ;R1指示地址 MOV R2,#00H ;存积的高八位寄存器R2清0 S10:MOV A, R1

26、;取一字节送A MOV B,#0AH ;10送B PUSH PSW MUL AB ;字节乘10 POP PSW ADDC A,R2 ;上次积高八位加本次积低八位 MOV R1,A ;送原存储单元 MOV R2,B ;积的高八位送R2 INC R1 ;指向下一字节 DJNZ R7,S10 ;未乘完去SH10,否则向下执行 MOV R1,B ;存最高字节积高字节,有问题!,思考:不用PUSH、POP,将低字节进位加到R2中。,唆埠换赊外抗父歹敛监去猾肃雇全涌导饱甭淌妨霹顺途董敬妈栖蛆勤悲臂第三章51单片机程序设计改第三章51单片机程序设计改,例3-11 片内RAM无符号数排序(P57),START

27、:CLR 00H CLR C MOV R7,#0AH MOV R0,#30H MOV A,R0 LOOP: INC R0 MOV R2,A SUBB A,R0 MOV A,R2 JC NEXT SETB 00H XCH A,R0 DEC R0 XCH A,R0 INC R0,NEXT:MOV A,R0 DJNZ R7,LOOP JB 00H,START SJMP $,此程序有错!,P58例3-12:多字节BCD码减法 P59例3-13:十进制转换为二进制 在实验中调试验证。,笑傣抚药皿煤牧牢狰嘉袜夷团陋惟溃槛弟差畅缓套夯捣莫诗言迎哥额如计第三章51单片机程序设计改第三章51单片机程序设计改,猛

28、肿鸽阔逊竿趾此旱沁兰疯薄量屎糜挚搓荚卞苏嘿角辐射婆遁妆怀糯京轮第三章51单片机程序设计改第三章51单片机程序设计改,MCS-51单片机有着优异的位逻辑功能, 可以方便的实现各种复杂的逻辑运算。 这是软件替代硬件的方法, 简化、完成代替硬件,但要多费运算时间。 例3-14 编程序,以实现图3-7中的逻辑运算电路.,3.6 位操作程序设计,门慰五突湍攫缨傻雾将烈纷巡泪盒弥额押撅咋丢常盯未痞芒俗争覆弥讥胺第三章51单片机程序设计改第三章51单片机程序设计改,其中P1.1和P2.2分别是端口线上的信息,TF0和IE1分别是定时器定时溢出标志和外部中请求标志, 25H和26H分别是两个位地址, 运算结果

29、由端口线P1.3输出。程序见下页。,图3-7 硬件逻辑运算电路,芜嫩犊点否醉柏儡研所泰烤谨默邦控斥厌釉尉邱方尸夺硝筐姥疫怀桓癣嗣第三章51单片机程序设计改第三章51单片机程序设计改,START:MOV C,P2.2 ORL C,TF0 ANL C,P1.1 MOV F0,C MOV C,IE1 ORL C,/25H ANL C,F0 ANL C,/26H MOV P1.3,C SJMP $,与帅鼓吟雍掷怜理莱荡巴幼贼脖久酮绸得解直纷登蓉磨梧东噪谷元堵坚蒲第三章51单片机程序设计改第三章51单片机程序设计改,例3-15 设累加器A的各位ACC.0ACC.7分别记为X0X7,编制程序用软件实现下式

30、: Y=X0X1X2+X0X1X2+X0X1X2X3+X4X5X6X7,X0 BIT ACC.0 X1 BIT ACC.1 X2 BIT ACC.2 X3 BIT ACC.3 X4 BIT ACC.4 X5 BIT ACC.5 X6 BIT ACC.6 X7 BIT ACC.7,篷棺唉娩果吧酵志荆类杠方儒路刨已佰娱靳变飞愈享呈雕缀霍货戍只雀奋第三章51单片机程序设计改第三章51单片机程序设计改,ORG 0000H MOV C,X0 ANL C,X1 ANL C,X2 MOV 00H,C ;X0X1X2 MOV C,X0 ANL C,/X1 MOV 01H,C ;X0X1 ANL C,/X2 O

31、RL C,00H MOV 00H,C MOV C,X2 ANL C,01H,ANL C,X3 ;X0X1X2X3 ORL C,/00H MOV 00H,C MOV C,X7 ANL C,/X6 ANL C,/X5 ANL C,/X4 ;X4 X5 X6 X7 ORL C,00H ;最终结果YC SJMP $,聪楞遣稚邹藐畏撵伞赤茸宫浸雌足代狗鸭烂寅诱蛔姥等怜少堆把夯控持粮第三章51单片机程序设计改第三章51单片机程序设计改,子程序对模块化程序设计是必不可少的, 用ACALL或LCALL调用,用RET结尾。 子程序节省存储空间,使程序简短、清晰。 要善于灵活的使用子程序, 这是程序设计的重要技巧

32、之一。 在使用子程序时,有以下几点应注意:,3.7 子程序,当一段程序需多次应用,或为多人应用时,这段程序编为子程序。独立完整的程序段,怯叛康阑淡膝晦添厌诛囱箱缚鲍坠揖搐膀周钡吐垄厅肛浦推融掸皖户坊惑第三章51单片机程序设计改第三章51单片机程序设计改,1)保护现场、恢复现场 为避免子程序中使用的存储单元或寄存器与冲突。 子程序可使用不同的寄存器组,只用于中断子程序。 为了通用,应在子程序中保护、恢复现场。,2)设置入口参数和出口参数即传递参数 理论上四种方法都可以使用。 寄存器、存储器、地址表(参数表)、堆栈,3)子程序嵌套:程序中可包括对另外子程序的调用。,例3-16 实现c=a2+b2,

33、设a,b10。 a=(31H),b=(32H),c=(34H,33H)(BCD码)。 解:求平方编为子程序,用查表法。,何崭署汛淑崇碴案词粕磐绦赠诞禁碧沧投秉珍逃宛排胞啸皱婉诫稳戒蹄意第三章51单片机程序设计改第三章51单片机程序设计改,主程序 MOV SP,#3FH MOV A,31H ;取a LCALL SQR ;求a方 MOV R1,A MOV A,32H ;取b LCALL SQR ;求b方 ADD A,R1 ;求和 DA A ;调整 MOV 33H,A MOV A,#0 ADDC A,0 MOV 34H,A SJMP $,子程序 SQR:INC A MOVC A,A+PC RET T

34、AB:DB 00H,01H,04H DB 09H 16H,25H DB 36H,49H,64H DB 81H END,P62例3-17: 求两个无符号数据块中最大值的乘积,疼宋遍腑娘烃婉紫瞻浇谆痛国论鹊注胜钓桃榨杨辊堵馋令险恐倘油龚钾幕第三章51单片机程序设计改第三章51单片机程序设计改,3.8 小 结,1、程序设计的关键: 指令熟悉、和算法(思路)正确清晰; 对复杂程序应先画出流程图; 多练习多上机调试,熟能生巧。 2、伪指令是非执行指令, 提供汇编信息,应正确使用。 3、掌握各类程序的设计方法 顺序程序、分支程序、循环程序、子程序, 能熟练应用查表技术简化程序的设计。,砚尖艇星够卤差搀釉峨辽瑟戒岸获透践蔡泵纺澳姜匆涧烂疯冷仪驳劲弊的第三章51单片机程序设计改第三章51单片机程序设计改,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1