单片机 程序设计例题 主讲:钱锐
单片机 程序设计例题 主讲:钱锐
基本结构程序 例1假定在外部RAM中有ST1、ST2和ST3共3个 连续单元,其中ST1、ST2单元中分别存放着两 个8位无符号数,要求找出其中的大数并存入 ST3单元。 分析:两个无符号数的大小比较可利用两 数相减是否有借位来判断,流程图和程序如下 所示:
一、基本结构程序 例1 假定在外部RAM中有ST1、ST2和ST3共3个 连续单元,其中ST1、ST2单元中分别存放着两 个8位无符号数,要求找出其中的大数并存入 ST3单元。 分析:两个无符号数的大小比较可利用两 数相减是否有借位来判断,流程图和程序如下 所示:
例1参考程序如下 (开焰) START CLR C PTR←#T MOV DPTR, #STI A←(mPTR) A DPTR R7←) MOV R7, A DFTR←PTR)+1 INC DPTR A←(mPTR DPTR A←(AJ)-0R7)=CY SUBB A R7 JC BIGI A DPTR A(R7风←(①PT SJMP BIG2 BIGI: XCH A R7 nPTR←mPTR)+1 BIG2: INC DPTR TR〕)←A DPTR,A SJMP 结束
例1参考程序如下: START: CLR C MOV DPTR,#ST1 MOVX A, @DPTR MOV R7, A INC DPTR MOVX A, @DPTR SUBB A, R7 JC BIG1 MOVX A, @DPTR SJMP BIG2 BIG1:XCH A, R7 BIG2:INC DPTR MOVX @DPTR,A SJMP $
例2计算50个8位二进制数(单字节)之和 要求:50个数存放在3OH开头的内部RAM中, 和放在R6R7中。 分析:采用DJM循环体的流程框图如下页所 示,在参考程序中,RO为数据地址指针,R2为 减法循环计数器 需要指出的是,在使用DNZ控制时,循环计 数器初值不能为0,当为0时,第一次进入循环 执行到DN时,减1使R2变为FFH,循环次数成 了256,显然不合题意
例2 计算50个8位二进制数(单字节)之和。 要求:50个数存放在30H开头的内部RAM中, 和放在R6R7中。 分析:采用DJNZ循环体的流程框图如下页所 示,在参考程序中,R0为数据地址指针,R2为 减法循环计数器。 需要指出的是,在使用DJNZ控制时,循环计 数器初值不能为0,当为0时,第一次进入循环 执行到DJNZ时,减1使R2变为FFH,循环次数成 了256,显然不合题意
T点RT 例2流程、程序如下: START: MOV R6, #0 F、R7—#囗 MOV R7,#0 #5 MOV R2,#50 F SOH MOV R0,#30H LOOP: MOV A, R7 F7+〔A)+〔〔FD〕 ADD A,@R0 MOV R A F6←F)+CY CLR A ADDC A r6 ←(RD〕+1 MOV R6. A INC RO -1≠ DJNZ R2. LOOP SJMP ELI
例2流程、程序如下: START:MOV R6, #0 MOV R7, #0 MOV R2, #50 MOV R0, #30H LOOP: MOV A, R7 ADD A, @R0 MOV R7, A CLR A ADDC A, R6 MOV R6, A INC R0 DJNZ R2, LOOP SJMP $