求大神给修改下程序,急求!!!在线等,或发到邮箱398228338@qq.com
用单片机实现占空比可调的方波发生器,希望占空比变化为1和10,但一下程序是实现占空比变化1和5的,希望能修改下,小弟没学过汇编,不知从哪下手。还有就是输出频率要100Hz...
用单片机实现占空比可调的方波发生器,希望占空比变化为1 和 10 ,但一下程序是实现占空比变化1 和5 的,希望能修改下,小弟没学过汇编,不知从哪下手。还有就是输出频率要100Hz,实际是25Hz,这个在这个程序里有么?有的话麻烦修改下,谢谢!
COUNT EQU 30H
AS EQU 30H
M EQU 35H
ORG 0000H
LJMP START
ORG 0003H
LJMP INT00
ORG 0013H
LJMP INT11
START:SETB EX0
SETB PX0
SETB IT0
SETB EX1
CLR PX1
SETB IT1
SETB EA
CLR P1.5
MOV TMOD,#21H
MOV TH1,#38H
MOV TH0,#0B1H
MOV TL0,#0E0H
SETB TR0
SETB TR1
MOV DPTR,#TABLE
MOV M,#50
MOV P0,#3FH
MOV P2,#6DH
MOV AS,#0
TOP:SETB TR1
SETB P1.0
CLR P1.1
MOV TH0,#0B1H
MOV TL0,#0E0H
MOV AS,#0
MOV B,#10
MOV A,M
MOV B,#100
DIV AB
JZ TIME1
MOV B,#10
CLERK:SETB P1.5
LCALL DELAY
CLR P1.5
LCALL DELAY
SETB P1.5
LCALL DELAY
CLR P1.5
MOV M,#50
LCALL SHOW
LJMP TOP
TIME1:JBC TF1,NEXT
SJMP TIME1
NEXT:INC AS
MOV A,M
CJNE A,AS,TIME1
CLR P1.0
SETB P1.1
CLR TR1
TIME0:JBC TF0,TOP
SJMP TIME0
INT00:JNB P1.2,LOOP1
INC M
LCALL SHOW
RETI
LOOP1:DEC M
LCALL SHOW
RETI
INT11:JNB P1.2,LOOP
MOV A,M
ADD A,#5
MOV M,A
LCALL SHOW
RETI
LOOP:MOV A,M
SUBB A,#5
MOV M,A
LCALL SHOW
RETI
SHOW:MOV A,M
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV P2,A
MOV A,B
MOVC A,@A+DPTR
MOV P0,A
MOV B,#10
RET
DELAY:MOV R6,#0FFH
DEY1:MOV R7,#0FFH
DEY2:MOV R5,#3
DJNZ R5,$
DJNZ R7,DEY2
DJNZ R6,DEY1
RET
TABLE:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END 展开
COUNT EQU 30H
AS EQU 30H
M EQU 35H
ORG 0000H
LJMP START
ORG 0003H
LJMP INT00
ORG 0013H
LJMP INT11
START:SETB EX0
SETB PX0
SETB IT0
SETB EX1
CLR PX1
SETB IT1
SETB EA
CLR P1.5
MOV TMOD,#21H
MOV TH1,#38H
MOV TH0,#0B1H
MOV TL0,#0E0H
SETB TR0
SETB TR1
MOV DPTR,#TABLE
MOV M,#50
MOV P0,#3FH
MOV P2,#6DH
MOV AS,#0
TOP:SETB TR1
SETB P1.0
CLR P1.1
MOV TH0,#0B1H
MOV TL0,#0E0H
MOV AS,#0
MOV B,#10
MOV A,M
MOV B,#100
DIV AB
JZ TIME1
MOV B,#10
CLERK:SETB P1.5
LCALL DELAY
CLR P1.5
LCALL DELAY
SETB P1.5
LCALL DELAY
CLR P1.5
MOV M,#50
LCALL SHOW
LJMP TOP
TIME1:JBC TF1,NEXT
SJMP TIME1
NEXT:INC AS
MOV A,M
CJNE A,AS,TIME1
CLR P1.0
SETB P1.1
CLR TR1
TIME0:JBC TF0,TOP
SJMP TIME0
INT00:JNB P1.2,LOOP1
INC M
LCALL SHOW
RETI
LOOP1:DEC M
LCALL SHOW
RETI
INT11:JNB P1.2,LOOP
MOV A,M
ADD A,#5
MOV M,A
LCALL SHOW
RETI
LOOP:MOV A,M
SUBB A,#5
MOV M,A
LCALL SHOW
RETI
SHOW:MOV A,M
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV P2,A
MOV A,B
MOVC A,@A+DPTR
MOV P0,A
MOV B,#10
RET
DELAY:MOV R6,#0FFH
DEY1:MOV R7,#0FFH
DEY2:MOV R5,#3
DJNZ R5,$
DJNZ R7,DEY2
DJNZ R6,DEY1
RET
TABLE:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END 展开
展开全部
其实汇编没什么,它和C语言一样,一样的逻辑,优点是它是赤裸裸的操作寄存器,而c语言只需要定义变量,不管数据存放到哪儿去;缺点是,汇编有种类差别,你学了inter的,但是依然无法拿到ARM上去用。
啰嗦一下吧:汇编你牢记的是,寄存器的地址,寄存器里面所装的数据,然后就是你对寄存器要进行什么样的操作。
另外,汇编和其他编程语言一样,要讲究风格。说个笑话,就是说现在社会上男人崇尚的是实力,不靠脸蛋,但也不能五官就凑在一团是吧?很多人都说,只要功能实现了,管我怎么写!呵呵~~
单片机的汇编不明白,不会里面的指令,如果是arm9的话可以讨论。我帮你修改下格式吧,然后估计还得你自己去思考吧,汇编其实很美的
COUNT EQU 30H
AS EQU 30H
M EQU 35H
ORG 0000H
LJMP START
ORG 0003H
LJMP INT00
ORG 0013H
LJMP INT11
START:
SETB EX0
SETB PX0
SETB IT0
SETB EX1
CLR PX1
SETB IT1
SETB EA
CLR P1.5
MOV TMOD,#21H
MOV TH1,#38H
MOV TH0,#0B1H
MOV TL0,#0E0H
SETB TR0
SETB TR1
MOV DPTR,#TABLE
MOV M,#50
MOV P0,#3FH
MOV P2,#6DH
MOV AS,#0
TOP:
SETB TR1
SETB P1.0
CLR P1.1
MOV TH0,#0B1H
MOV TL0,#0E0H
MOV AS,#0
MOV B,#10
MOV A,M
MOV B,#100
DIV AB
JZ TIME1
MOV B,#10
CLERK:
SETB P1.5
LCALL DELAY
CLR P1.5
LCALL DELAY
SETB P1.5
LCALL DELAY
CLR P1.5
MOV M,#50
LCALL SHOW
LJMP TOP
TIME1:
JBC TF1,NEXT
SJMP TIME1
NEXT:
INC AS
MOV A,M
CJNE A,AS,TIME1
CLR P1.0
SETB P1.1
CLR TR1
TIME0:JBC TF0,TOP
SJMP TIME0
INT00:JNB P1.2,LOOP1
INC M
LCALL SHOW
RETI
LOOP1:
DEC M
LCALL SHOW
RETI
INT11:
JNB P1.2,LOOP
MOV A,M
ADD A,#5
MOV M,A
LCALL SHOW
RETI
LOOP:
MOV A,M
SUBB A,#5
MOV M,A
LCALL SHOW
RETI
SHOW:
MOV A,M
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV P2,A
MOV A,B
MOVC A,@A+DPTR
MOV P0,A
MOV B,#10
RET
DELAY:
MOV R6,#0FFH
DEY1:
MOV R7,#0FFH
DEY2:
MOV R5,#3
DJNZ R5,$
DJNZ R7,DEY2
DJNZ R6,DEY1
RET
TABLE:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END
你如果真想要别人帮忙的话,估计你得把你用的哪块单片机的型号写出来,天下武术本出一家,但分支不同,问题也就不同,华山剑法不懂峨眉剑法一样。 嘿嘿! 另外,你应该把注释写出来,程序注释,不然也很难懂
啰嗦一下吧:汇编你牢记的是,寄存器的地址,寄存器里面所装的数据,然后就是你对寄存器要进行什么样的操作。
另外,汇编和其他编程语言一样,要讲究风格。说个笑话,就是说现在社会上男人崇尚的是实力,不靠脸蛋,但也不能五官就凑在一团是吧?很多人都说,只要功能实现了,管我怎么写!呵呵~~
单片机的汇编不明白,不会里面的指令,如果是arm9的话可以讨论。我帮你修改下格式吧,然后估计还得你自己去思考吧,汇编其实很美的
COUNT EQU 30H
AS EQU 30H
M EQU 35H
ORG 0000H
LJMP START
ORG 0003H
LJMP INT00
ORG 0013H
LJMP INT11
START:
SETB EX0
SETB PX0
SETB IT0
SETB EX1
CLR PX1
SETB IT1
SETB EA
CLR P1.5
MOV TMOD,#21H
MOV TH1,#38H
MOV TH0,#0B1H
MOV TL0,#0E0H
SETB TR0
SETB TR1
MOV DPTR,#TABLE
MOV M,#50
MOV P0,#3FH
MOV P2,#6DH
MOV AS,#0
TOP:
SETB TR1
SETB P1.0
CLR P1.1
MOV TH0,#0B1H
MOV TL0,#0E0H
MOV AS,#0
MOV B,#10
MOV A,M
MOV B,#100
DIV AB
JZ TIME1
MOV B,#10
CLERK:
SETB P1.5
LCALL DELAY
CLR P1.5
LCALL DELAY
SETB P1.5
LCALL DELAY
CLR P1.5
MOV M,#50
LCALL SHOW
LJMP TOP
TIME1:
JBC TF1,NEXT
SJMP TIME1
NEXT:
INC AS
MOV A,M
CJNE A,AS,TIME1
CLR P1.0
SETB P1.1
CLR TR1
TIME0:JBC TF0,TOP
SJMP TIME0
INT00:JNB P1.2,LOOP1
INC M
LCALL SHOW
RETI
LOOP1:
DEC M
LCALL SHOW
RETI
INT11:
JNB P1.2,LOOP
MOV A,M
ADD A,#5
MOV M,A
LCALL SHOW
RETI
LOOP:
MOV A,M
SUBB A,#5
MOV M,A
LCALL SHOW
RETI
SHOW:
MOV A,M
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV P2,A
MOV A,B
MOVC A,@A+DPTR
MOV P0,A
MOV B,#10
RET
DELAY:
MOV R6,#0FFH
DEY1:
MOV R7,#0FFH
DEY2:
MOV R5,#3
DJNZ R5,$
DJNZ R7,DEY2
DJNZ R6,DEY1
RET
TABLE:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END
你如果真想要别人帮忙的话,估计你得把你用的哪块单片机的型号写出来,天下武术本出一家,但分支不同,问题也就不同,华山剑法不懂峨眉剑法一样。 嘿嘿! 另外,你应该把注释写出来,程序注释,不然也很难懂
展开全部
已经三年没看过汇编了,记不得了哦,身边也没参考书。你那可以做实验吗?
把M EQU 35H 变成40H试试?
整个程序可以这么看 从 COUNT EQU 30H 到 LJMP INT11是主程序,后面是子程序。可能你要等很久了,用汇编的人很少
把M EQU 35H 变成40H试试?
整个程序可以这么看 从 COUNT EQU 30H 到 LJMP INT11是主程序,后面是子程序。可能你要等很久了,用汇编的人很少
追问
好的,我试试,做实验还得去实验室,那子程序里不用任何修改么?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询