汇编语言lcall d200c,有没有哪位大佬能帮我把汇编语言帮我转为c或者c++的 求帮助...

ORG 0000H

LJMP MAIN ;主程序

ORG 0003H

LJMP INT01

ORG 0030H

MAIN: MOV P0,#0FFH ;给P0口高电平

MOV SP,#60H ;设置堆栈指针

ZC : MOV R6,#01H

MOV R7,#0FH

CLR IT0 ;外部中断设置为低电平触发

SETB EX0 ;开启外部中断0

SETB EA ;开启总中断

START: ;确保每个波形能够循环输出

CJNE R7,#00H,LLL0

SJMP ZX

SJMP START

LLL0: CJNE R7,#01H,LLL1

SJMP FB

SJMP START

LLL1: CJNE R7,#02H,LLL2

SJMP SJ

SJMP START

LLL2: CJNE R7,#03H,LLL3

LJMP JUC

LLL3: SJMP START

INT01: ;产生外部中断0,检测对应的按钮输出对应的波形

JB P2.1,LL0

MOV R7,#00H

SJMP LL3

LL0: JB P2.2,LL1

MOV R7,#01H

SJMP LL3

LL1: JB P2.3,LL2

MOV R7,#02H

第 25 页 共 30 页

25/30页

SJMP LL3

LL2: JB P2.4,LL3

MOV R7,#03H

SJMP LL3

LL3: RETI

ZX: MOV R3,#00H ;产生正弦波

LOOP0: MOV A,R3

MOV DPTR,#TABLE ;查表

MOVC A,@A+DPTR

MOV DPTR,#0FEFFH ;定义DAC0832地址

MOVX @DPTR,A ;读数据

INC R3

JB P2.5,LOOP1 ;正弦波调频

LCALL D50US

LOOP1: CJNE R3,#255,LOOP0

MOV R3,#00H

CJNE R7,#00H,START ;检测键是否按下

AJMP ZX

FB: MOV DPTR,#0FEFFH;产生方波

JB P2.6,LOOP2 ;检测调幅按钮调幅

MOV A,#0CCH ;方波高电平幅值1

SJMP LOOP3

LOOP2: MOV A,#055H ;方波高电平幅值2 LOOP3: MOVX @DPTR,A

LCALL D200US ;延时

JB P2.5,LOOP4 ;方波前半周期调频

LCALL D200US

LOOP4: MOV A,#5 ;方波低电平幅值

MOVX @DPTR,A

LCALL D200US ;延时

JB P2.5,LOOP5 ;方波后半周期调频

LCALL D200US

LOOP5: CJNE R7,#01H,START ;检测键是否按下

AJMP FB

第 26 页 共 30 页

26/30页

SJ: MOV R3,#00H;产生三角波

LOOP6: MOV A,R3

MOV DPTR,#0FEFFH

MOVX @DPTR,A

INC R3 ;波形上升

MOV A,R3

JB P2.5,LOOP7 ;三角波前半周期调频

LCALL D50US

LOOP7: JB P2.6,LOOP8 ;三角波调幅

CJNE A,#0FFH,LOOP6 ;幅值1

SJMP LOOP9

LOOP8: CJNE A,#055H,LOOP6 ;幅值2 LOOP9: DEC R3 ;波形下降

JB P2.5,LOOP10 ;三角波后半周期调频

LCALL D50US

LOOP10: MOV A,R3

MOV DPTR,#0FEFFH

MOVX @DPTR,A

CJNE R3,#00H,LOOP9

CJNE R7,#02H,SJOUT ;检测键是否按下

AJMP SJ

SJOUT: LJMP START

JUC: MOV R3,#00H;产生锯齿波

LOOP11: MOV A,R3

MOV DPTR,#0FEFFH

MOVX @DPTR,A

INC R3 ;波形上升

MOV A,R3

JB P2.5,LOOP12 ;锯齿波调频

LCALL D50US

LOOP12: JB P2.6,LOOP13 ;锯齿波调幅

CJNE A,#0FFH,LOOP11 ;幅值1

SJMP LOOP14

LOOP13: CJNE A,#055H,LOOP11 ;幅值2 LOOP14: CJNE R7,#03H,JUCOUT ;检测键是否按下

AJMP JUC

第 27 页 共 30 页

27/30页

JUCOUT: LJMP START

D200US: MOV R1,#2 ;200μs延时

MOV R2,#50

L5: DJNZ R2,$

DJNZ R1,L5

RET

D50US: MOV R1,#1 ;50μs延时

MOV R2,#23

L6: DJNZ R2,$

DJNZ R1,L6

RET

TABLE:DB

080h,083h,086h,089h,08ch,090h,093h,096h,099h,09ch,09fh,0a2h,0a5h,0a8h,0abh,0aeh ;产生正弦波代码

DB

0b1h,0b3h,0b6h,0b9h,0bch,0bfh,0c1h,0c4h,0c7h,0c9h,0cch,0ceh,0d1h,0d3h,0d5h,0d8h

DB

0dah,0dch,0deh,0e0h,0e2h,0e4h,0e6h,0e8h,0eah,0ebh,0edh,0efh,0f0h,0f1h,0f3h,0f4h

DB

0f5h,0f6h,0f8h,0f9h,0fah,0fah,0fbh,0fch,0fdh,0fdh,0feh,0feh,0feh,0ffh,0ffh,0ffh

DB

0ffh,0ffh,0ffh,0ffh,0feh,0feh,0feh,0fdh,0fdh,0fch,0fbh,0fah,0fah,0f9h,0f8h,0f6h

DB

0f5h,0f4h,0f3h,0f1h,0f0h,0efh,0edh,0ebh,0eah,0e8h,0e6h,0e4h,0e2h,0e0h,0deh,0dch

DB

0dah,0d8h,0d5h,0d3h,0d1h,0ceh,0cch,0c9h,0c7h,0c4h,0c1h,0bfh,0bch,0b9h,0b6h,0b3h

DB

0b1h,0aeh,0abh,0a8h,0a5h,0a2h,09fh,09ch,099h,096h,093h,090h,08ch,089h,086h,083h

第 28 页 共 30 页

28/30页

DB

080h,07dh,07ah,077h,074h,070h,06dh,06ah,067h,064h,061h,05eh,05bh,058h,055h,052h

DB

04fh,04dh,04ah,047h,044h,041h,03fh,03ch,039h,037h,034h,032h,02fh,02dh,02bh,028h

DB

026h,024h,022h,020h,01eh,01ch,01ah,018h,016h,015h,013h,011h,010h,00fh,00dh,00ch

DB

00bh,00ah,008h,007h,006h,006h,005h,004h,003h,003h,002h,002h,002h,001h,001h,000h

DB

000h,000h,001h,001h,002h,002h,002h,003h,003h,004h,005h,006h,006h,007h,008h,00ah

DB

00bh,00ch,00dh,00fh,010h,011h,013h,015h,016h,018h,01ah,01ch,01eh,020h,022h,024h

DB

026h,028h,02bh,02dh,02fh,032h,034h,037h,039h,03ch,03fh,041h,044h,047h,04ah,04dh

DB

04fh,052h,055h,058h,05bh,05eh,061h,064h,067h,06ah,06dh,070h,074h,077h,07ah,07dh

END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值