您现在的位置是:首页 >宏观 > 2024-04-20 05:12:59 来源:
单片机编程代码大全(单片机编程)
大家好,我是小夏,我来为大家解答以上问题。单片机编程代码大全,单片机编程很多人还不知道,现在让我们一起来看看吧!
1、AA EQU 50H ;假设第一组数据排列好后的入口地址
2、 BB EQU 55H ;假设第二组数据排列好后的入口地址
3、 CC EQU 5AH ;假设第三组数据排列好后的入口地址
4、 DD EQU 5FH ;假设第四组数据排列好后的入口地址
5、 ORG 0000H
6、 MAIN: MOV SP,#70H
7、 JMP L1 ;跳到第一组要排列的地方
8、 SORT: MOV A,R0 ;
9、 MOV R1,A ;(R1)为首地址
10、 MOV A,R2 ;字节数送入R5
11、 MOV R5,A ;(R5)为字节数
12、 CLR F0 ;互换标志位F0清零
13、 DEC R5 ;循环n-1
14、 MOV A,@R1 ;
15、 LOOP: MOV R3,A ;(R3)为前一个数
16、 INC R1 ;地址指向下一个数
17、 CLR C ;
18、 MOV A,@R1 ;取下一个数
19、 SUBB A,R3 ;比较大小
20、 JNC LOOP1 ;如果进位位Cy=0,则转移
21、 SETB F0 ;互换标志位F0置1
22、 MOV A,R3 ;前面大的数放到A
23、 XCH A,@R1 ;互换后,小的数在A,大数在@R1
24、 DEC R1 ;(R1)指向前一个地址
25、 XCH A,@R1 ;小的数放到前一个地址
26、 INC R1 ; (R1)指向下一个地址
27、LOOP1: MOV A,@R1 ;取下一个数
28、 DJNZ R5,LOOP
29、 MOV C,F0
30、 JC SORT
31、 RET
32、 K0: INC R0
33、 INC R1
34、 MOV A,@R0
35、 MOV @R1,A
36、 DJNZ R7,K0
37、 RET
38、 L1: MOV R2,#05H ;假设未排列前第一组数据的入口地址位10H,共5个数。
39、 MOV R0,#10H
40、 CALL SORT ;冒泡排列
41、 MOV R7,#04H
42、 MOV R1,#50H
43、 MOV AA,@R0
44、 CALL K0 ;将排列好的数送到50H,共5 个数。
45、 L2: MOV R2,#05H ;假设未排列前第二组数据的入口地址位20H,共5个数。
46、 MOV R0,#20H
47、 CALL SORT ;冒泡排列
48、 MOV R7,#04H
49、 MOV R1,#55H
50、 MOV BB,@R0
51、 CALL K0 ;将排列好的数送到55H,共5 个数。
52、 L3: MOV R2,#05H ;假设未排列前第三组数据的入口地址位30H,共5个数。
53、 MOV R0,#30H
54、 CALL SORT ;冒泡排列
55、 MOV R7,#04H
56、 MOV R1,#5AH
57、 MOV CC,@R0
58、 CALL K0 ;将排列好的数送到5AH,共5 个数。
59、 L4: MOV R2,#05H ;假设未排列前第四组数据的入口地址位40H,共5个数。
60、 MOV R0,#40H
61、 CALL SORT ;冒泡排列
62、 MOV R7,#04H
63、 MOV R1,#5FH
64、 MOV DD,@R0
65、 CALL K0 ;将排列好的数送到5FH,共5 个数。
66、 L5: MOV R2,#14H
67、 MOV R0,#50H
68、 CALL SORT ;将四组排列好的数据集中按冒泡排列从小到大排列,即50H~63H中的数据依次增大。
69、 END
本文到此讲解完毕了,希望对大家有帮助。