原创 请教达人一段程序

2009-6-3 20:51 1349 0 分类: MCU/ 嵌入式

ATM89S52 单片机作为控制核心,外围采用模拟/数字转换电路(DAC0832)、稳压电路(MC1403)、运放电路(LM324)、按键和LED显示灯电路等。电路采用AT89S52单片机和一片DAC0832数模转换器组成数字式低频信号发生器。


以下为程序,求达人给注释一下,答辩急用,不胜感激  本人邮箱www.lz94s@sina.com,谢谢!


;按键KEY1:锯齿波  按键KEY2:三角波  按键KEY3: 正弦波  <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


;按键KEY4: 方波;


    ORG  0000H


   LJMP  MAIN


    ORG  0100H


MAIN:MOV SP,#50H


;利用dac0832产生锯齿波;


B1: MOV A,#00H


LP1:SETB  P1.5


    SETB  P1.6


    SETB  P1.7


    CLR   P1.4


    MOV   DPTR,#4000H


    MOVX  @DPTR,A


    CJNE  A,#0F0H,MORE


    JNB   KEY2,B2


    JNB   KEY3,B3


    JB    KEY4,D0


    LJMP  B4


D0: SJMP  B1


MORE:INC  A


     SJMP LP1


 


;利用dac0832产生三角波;


B2: MOV A,#00H


UP1:SETB  P1.4


    SETB  P1.6


    SETB  P1.7


    CLR   P1.5


    MOV   DPTR,#4000H


    MOVX  @DPTR,A


    INC   A


    JNZ UP1


DOWN1: DEC  A


       MOVX @DPTR,A


       JNZ  DOWN1


       JNB  KEY1,B1


       JNB  KEY3,B3


       JB   KEY4,C0


       LJMP B4


C0:    SJMP UP1


  


;利用dac0832产生正弦波;


B3:    MOV R1,#00H ;取表格初值


;在表格里取数送到指定地址/////////////////////


LOOP1:SETB  P1.4


      SETB  P1.5


      SETB  P1.7


       CLR  P1.6


       MOV  A,R1


       MOV  DPTR,#SETTAB


       MOVC A,@A+DPTR


       MOV  DPTR,#4000H


       MOVX @DPTR,A


       INC  R1;表格加一


       JNB  KEY1,B1


       JNB  KEY2,B2


       JB   KEY4,E0


       LJMP B4


E0:    AJMP LOOP1 ;循环


SETTAB:


;正弦表格/////////////////////////////////////


DB 80H,83H,86H,89H,8DH,90H,93H,96H


DB 99H,9CH,9FH,0A2H,0A5H,0A8H,0ABH,0AEH


DB 0B1H,0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5H


DB 0C7H,0CAH,0CCH,0CFH,0D1H, 0D4H,0D6H,0D8H


DB 0DAH,0DDH,0DFH,0E1H,0E3H, 0E5H,0E7H,0E9H


DB 0EAH,0ECH,0EEH,0EFH,0F1H, 0F2H,0F4H,0F5H


DB 0F6H,0F7H,0F8H,0F9H,0FAH, 0FBH,0FCH,0FDH


DB 0FDH,0FEH,0FFH,0FFH,0FFH, 0FFH,0FFH,0FFH


DB 0FFH,0FFH,0FFH,0FFH,0FFH, 0FFH,0FEH,0FDH


DB 0FDH,0FCH,0FBH,0FAH,0F9H, 0F8H,0F7H,0F6H


DB 0F5H,0F4H,0F2H,0F1H,0EFH, 0EEH,0ECH,0EAH


DB 0E9H,0E7H,0E5H,0E3H,0E1H, 0DEH,0DDH,0DAH


DB 0D8H,0D6H,0D4H,0D1H,0CFH, 0CCH,0CAH,0C7H


DB 0C5H,0C2H,0BFH,0BCH,0BAH, 0B7H,0B4H,0B1H


DB 0AEH,0ABH,0A8H,0A5H,0A2H, 9FH, 9CH, 99H


DB 96H, 93H, 90H, 8DH, 89H, 86H, 83H, 80H


DB 80H, 7CH, 79H, 78H, 72H, 6FH, 6CH, 69H


DB 66H, 63H, 60H, 5DH, 5AH, 57H, 55H, 51H


DB 4EH, 4CH, 48H, 45H, 43H, 40H, 3DH, 3AH


DB 38H, 35H, 33H, 30H, 2EH, 2BH, 29H, 27H


DB 25H, 22H, 20H, 1EH, 1CH, 1AH, 18H, 16H


DB 15H, 13H, 11H, 10H, 0EH, 0DH, 0BH, 0AH


DB 09H, 08H, 07H, 06H, 05H, 04H, 03H, 02H


DB 02H, 01H, 00H, 00H, 00H, 00H, 00H, 00H


DB 00H, 00H, 00H, 00H, 00H, 00H, 01H, 02H


DB 02H, 03H, 04H, 05H, 06H, 07H, 08H, 09H


DB 0AH, 0BH, 0DH, 0EH, 10H, 11H, 13H, 15H


DB 16H, 18H, 1AH, 1CH, 1EH, 20H, 22H, 25H


DB 27H, 29H, 2BH, 2EH, 30H, 33H, 35H, 38H


DB 3AH, 3DH, 40H, 43H, 45H, 48H, 4CH, 4EH


DB 51H, 55H, 57H, 5AH, 5DH, 60H, 63H, 66H


DB 69H, 6CH, 6FH, 72H, 76H, 79H, 7CH, 80H


 


;利用dac0832产生方波;


B4: MOV A,#00H


LP2:SETB  P1.4


    SETB  P1.6


    SETB  P1.5


     CLR  P1.7


    MOV   DPTR,#4000H


    MOVX  @DPTR,A


    LCALL DELY


    MOV A,#0FFH


    MOVX  @DPTR,A


    LCALL DELY


    JB    KEY1,J0


    LJMP  B1


J0: JB    KEY2,J1


    LJMP  B2


J1: JB    KEY3,J2


    LJMP  B3


J2: SJMP  B4


 


DELY:   MOV   R7,#05H


DLY0:   MOV   R6,#00H


        nop


DLY1:   DJNZ  R6,DLY1


        DJNZ  R7,DLY0


        RET


DELAY:  MOV   R4,#100


DLAY0:  MOV   R3,#98


        NOP


DLAY1:  DJNZ  R4,DLAY1


        DJNZ  R3,DLAY0


        RET


KEY1  BIT  P1.0


KEY2  BIT  P1.1


KEY3  BIT  P1.2


KEY4  BIT  P1.3


END


 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
0
关闭 站长推荐上一条 /4 下一条