汇编语言clr c什么意思,汇编程序中C(1):errorC129:missing';'before Bit是什么意思,加了分号也不对,怎么回事啊...

汇编程序中C(1):errorC129:missing';'before Bit是什么意思,加了分号也不对,怎么回事啊

汇编程序中C(1):errorC129:missing';'before Bit是什么意思,加了分号也不对,怎么回事啊

CS BIT P1.7

CLK BIT P1.0

DO BIT P1.1

AD_TMP EQU 30H

AD_TMP_1 EQU 31H

AD_TMP_2 EQU 32H

AD_TMP_3 EQU 33H

AD_TMP1 EQU 34H

ORG 0000H

LJMP MAIN

ORG 0030H

MAIN: CLR P2.0

START: LCALL AD_CONV

LCALL DISPLAY

LJMP START

AD_CONV: SETB CS

CLR CLK

NOP

NOP

CLR CS

NOP

NOP

SETB CLK

NOP

NOP

CLR CLK

NOP

NOP

SETB CLK

NOP

NOP

MOV R0, #08H

AD_READ: CLR CLK

MOV C, DO

RLC A

SETB CLK

NOP

NOP

DJNZ R0, AD_READ

SETB CS

MOV AD_TMP, A

RET

DISPLAY: MOV A, AD_TMP

MOV DPTR, #TAB1

MOVC A, @A+DPTR

CJNE A, #80, S1

SJMP S3

S1: JNC S2

SJMP S4

S2: CLR P3.0

SJMP S4

S3: SETB P3.0

S4: MOV B, #100

DIV AB

MOV AD_TMP_1, A

MOV A, B

MOV B, #10

DIV AB

MOV AD_TMP_2, A

MOV AD_TMP_3, B

MOV DPTR, #TAB

MOV A, AD_TMP_1

MOVC A, @A+DPTR

MOV P0, A

SETB P2.1

LCALL DLY

CLR P2.1

MOV A, AD_TMP_2

MOVC A, @A+DPTR

MOV P0, A

SETB P2.2

LCALL DLY

CLR P2.2

MOV A, AD_TMP_3

MOVC A, @A+DPTR

MOV P0, A

SETB P2.3

LCALL DLY

CLR P2.3

RET

TAB: DB 0C0H, 0F9H, 0A4H,0B0H, 99H, 92H, 82H, 0F8H

DB 80H, 90H, 88H, 83H, 0C6H,0A1H, 86H, 8EH

TAB1:DB 0, 1, 2,3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18

DB 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,29 ,30, 31, 32, 33, 34

DB 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,45, 46, 47, 48, 49

DB 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,60, 61, 62, 63, 64, 65, 66

DB 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,77, 78, 79, 80

DB 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,91, 92, 93

DB94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106

DB107, 108, 109, 110, 111, 112, 113, 114, 115, 116

DB117, 118, 119, 120

DLY: MOV R4, #2

D1: MOVR3, #248

DJNZ R3, $

DJNZ R4, D1

RET

END

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这段代码是一个基于8051单片机的冒泡排序算法,其主要功能是对存储在内存的数据进行排序。 然而,在这段代码存在一些问题: 1. MOV R0, ## 和 MOV R7, ## 这两行代码后面应该跟上操作数,表示要赋给寄存器的值。例如:MOV R0, #0;MOV R7, #7。 2. 循环计数器的初始值应该是数组的长度减一,而不是数组的长度。例如:MOV R7, #6。 3. 内层循环在更新数组下标指针的时候,应该使用直接地址寻址方式,而不是寄存器间接寻址方式。例如:MOV A, @R0;MOV R1, A。 4. 在内层循环,当发现需要交换两个元素时,应该先将第一个元素保存到一个临时寄存器,再进行交换。例如:MOV A, @R0;MOV R1, A;MOV A, @R1;MOV @R0, A;MOV A, R1;MOV @R1, A。 5. 在内层循环,当发现需要交换两个元素时,应该将循环计数器减一,而不是一。例如:DJNZ R6, LOOP2。 6. 在内层循环结束之后,应该将循环计数器恢复到初始值,而不是置零。例如:MOV R1, A。 修改后的代码如下: ``` ORG 0000H LJMP MAIN ORG 0100H MAIN: MOV R0, #0 MOV R7, #6 LOOP1: MOV A, R7 MOV R6, A MOV A, R0 MOV R1, A INC R1 LOOP2: MOV A, @R0 CLR C SUBB A, @R1 JC LOOP3 MOV A, @R0 MOV R2, A MOV A, @R1 MOV @R0, A MOV A, R2 MOV @R1, A LOOP3: INC R1 DJNZ R6, LOOP2 INC R0 DJNZ R7, LOOP1 SJMP $ END ``` 这段代码可以实现对内存的数据进行冒泡排序,其基本思路与前面提到的冒泡排序算法相同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值