当前位置:编程学习 > 汇编语言 >>

求大神给修改下程序,急求!!!在线等,或发到邮箱398228338@qq.com

用单片机实现占空比可调的方波发生器,希望占空比变化为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
追问:好的,我试试,做实验还得去实验室,那子程序里不用任何修改么?
答案:其实汇编没什么,它和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
你如果真想要别人帮忙的话,估计你得把你用的哪块单片机的型号写出来,天下武术本出一家,但分支不同,问题也就不同,华山剑法不懂峨眉剑法一样。 嘿嘿! 另外,你应该把注释写出来,程序注释,不然也很难懂
其他:已经三年没看过汇编了,记不得了哦,身边也没参考书。你那可以做实验吗?
把M           EQU   35H 变成40H试试?
整个程序可以这么看  从      COUNT    EQU   30H   到 LJMP     INT11是主程序,后面是子程序。可能你要等很久了,用汇编的人很少 jhjg 

上一个:自学c/c++软件架构师,想干出个大事,我是残疾人27岁晚不晚吗 学好汇编怎么样?
下一个:在win32asm中,想写个验证密码的东西

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,