1、单片机原理及其接口技术实验报告实验七: 多分支程序学院:基础与信息工程学院 专业:电子信息工程专业学号: 姓名: 日期:一实验目的:1、掌握程序流程图的绘制方法2、了解单片机中多分支程序的编程技巧3、熟练运用程序分段调试方法二实验要求:1、采用上图的连接方式,开关 K1,K2 用作输入;编程实现输入为:(1) 00H 时,将内 RAM30H3FH 单元的数据递增 1 赋值,且初始值为 00H;(2)01H 时,将内 RAM30H3FH 单元的数据由大到小排序;(3)02H 时,将 3EH,3FH 作为双字节数(被除数) ,30H,31H作为双字节数(除数) ,进行运算,将结果保存于 40H 开
2、始的单元(区分商、余数) ;(4)03H 时,将内 RAM30H3FH 单元的数据清零。三实验流程图及源程序:开始P 1 = # 0 0 H ? P 1 = # 0 1 H ? P 1 = # 0 2 H ?R 0 # 3 0 H( 5 0 H ) # 0 0 HR 1 # 1 0 H R 0 ( 5 0 H )I N C 5 0 HR 0 R 0 + 1R 1 - 1 = 0 ?R 3 # 0 F HR 0 # 3 0 H , R 2 # 1 0 H2 0 H R 0 , A R 0R 0 + 1 , 2 1 H R 0( 2 0 H ) = ( 2 1 H ) ? R 0 2 0 H ,
3、R 0 - 1 R 0 2 1 H , R 0 + 1R 2 - 1 = 0 ?R 3 - 1 = 0 ?NYNNNNYYYYYYYN N N商与余数都赋初值0 0 H被除数与除数的高低字节分别作减法运算 , 低字节不够减时向高字节借位被除数大于除数 ?商加 1更新被除数值为相减差值将差值送余数YR 0 # 3 0 HR 1 # 1 0 H R 0 # 0 0 HR 1 R 1 + 1R 1 - 1 = 0 ?NORG 0000HSJMP MAINORG 0030HMAIN: MOV SP,#60HLOOP_0: MOV A,P1CJNE A,#00H,LOOP_1MOV R0,#30HMOV
4、 50H,#00HMOV R1,#10HLOP: MOV R0,50HINC 50HINC R0DJNZ R1,LOPSJMP LOOP_0LOOP_1: MOV A,P1CJNE A,#01H,LOOP_2MOV R3,#0FHBUBBLE: MOV R0,#30HMOV R2,#0FHBULOOP: MOV 20H,R0MOV A,R0INC R0MOV 21H,R0CJNE A,21H,LOOPLOOP: JNC NEXTMOV R0,20HDEC R0MOV R0,21HINC R0NEXT: DJNZ R2,BULOOPDJNZ R3,BUBBLESJMP LOOP_0LOOP_2:
5、 MOV A,P1CJNE A,#02,LOOP_3MOV R0,3EHMOV R1,3FHMOV R2,30HMOV R3,31HMOV R4,#0MOV R5,#0 ;商赋初值零MOV A,R0MOV R6,AMOV A,R1MOV R7,A ;余数赋初值 ,保证商为零时余数正常Byte_1: MOV A,R1CLRCSUBB A,R3 ;低字节相减MOV R1,AMOV A,R0SUBB A,R2 ;高位相减MOV R0,AJC Byte_3 ;如果高字节都需要借位则退出循环CLRCMOV A,R5ADD A,#1 MOV R5,AJNC Byte_2INC R4 ;商加一Byte_2: MOV A,R1MOV R7,AMOV A,R0MOV R6,A ;更新余数LJMP Byte_1Byte_3: MOV 40H,R4MOV 41H,R5MOV 42H,R6MOV 43H,R7SJMP LOOP_0LOOP_3:MOV R0,#30HMOV R1,#10HLOP1: MOV R0,#00HINC R0DJNZ R1,LOP1SJMP LOOP_0END四心得体会:此程序综合性较强,对加深以前的实验有较大帮助。