;****************************************************************************************** ; dsPIC33FJ256GP710 Sample Program ; Project : ; Program Name : ; Programer : ; Create date : Version 1.0 H21.04.05 ; History : ; Laungage : MPLAB ASM30 ;****************************************************************************************** ; (1)Description ; ;****************************************************************************************** .include "p33FJ256GP710.inc" config __FOSCSEL , FNOSC_FRCPLL & IESO_OFF config __FOSC , FCKSM_CSECMD & OSCIOFNC_ON & POSCMD_NONE config __FWDT , FWDTEN_OFF .bss .global __reset .section data_area LED_lst: .space 2 ;****************************************************************************************** ; Function Name : main ; Title : ; Input : ; Output : ;****************************************************************************************** .text __reset: ;******************* ; 1.Initialize ;******************* ; (0)Initialize Stack Pointer MOV #__SP_init, W15 ;Initalize the Stack Pointer MOV #__SPLIM_init, W0 ;Initialize the Stack Pointer Limit Register MOV W0, SPLIM NOP ;Add NOP to follow SPLIM initialization ; (1)Set All Digital Port MOV.W #0xFFFF,W0 MOV.W W0,AD1PCFGL ; (2)Define PortB MOV.W #0xFF00,W0 MOV.W W0,TRISB ; (3)Set Initial Value LEDlst MOV.W #0x0001,W0 MOV.W W0,LED_lst ; MOV.W LED_lst,W0 MOV.W W0,PORTB ;******************* ; 2.Program main ;******************* main_p: CALL mvLED MOV.W LED_lst,W0 MOV.W W0,PORTB CALL wat BRA main_p ;****************************************************************************************** ; Function Name : mvLED ; Title : Move LED function ; Input : ; Output : ;****************************************************************************************** mvLED: ; ****************** ; 1.Initialize ; ****************** PUSH.W W0 PUSH.W W1 PUSH.W W2 PUSH.W W3 PUSH.W W4 ; ; ****************** ; 2.Program main ; ****************** ; (1)Case LED_lst = 1 MOV.W LED_lst,W1 SUB.W W1,#1,W3 BRA NZ,mvLED_2 MOV.W #2,W2 MOV.W W2,LED_lst BRA mvLED_end ; (2)Case LED_lst <= 127 mvLED_2: MOV.W LED_lst,W1 MOV.W #127,W2 SUB.W W1,W2,W3 BRA LEU,mvLED_3 MOV.W #1,W2 MOV.W W2,LED_lst BRA mvLED_end ; (3)Case 1< LED_lst < 127 mvLED_3: MOV.W #1,W2 SL.W W1,W2,W1 MOV.W W1,LED_lst BRA mvLED_end ; ****************** ; 3.End ; ****************** mvLED_end: POP.W W4 POP.W W3 POP.W W2 POP.W W1 POP.W W0 RETURN ;****************************************************************************************** ; Function Name : wat ; Title : wait function ; Input : ; Output : ; Description : ; W5:Timer_0,W1:Timer_1,W2:Timer_2 ;****************************************************************************************** wat: ; ****************** ; 1.Initialize ; ****************** PUSH.W W0 PUSH.W W1 PUSH.W W2 PUSH.W W3 PUSH.W W4 PUSH.W W5 ; ****************** ; 2.Program main ; ****************** ; (0)wat_0 CLR.W W5 wat_0: MOV.W #0x0001,W3 INC.W W5,W3 MOV.W W3,W5 ; MOV.W #0x32,W3 ; LP_0 < 0x32(50) SUB.W W5,W3,W4 BRA LEU,wat_1S BRA wat_e wat_1S: ; (1)wat_1 CLR.W W1 wat_1: MOV.W #0x0001,W3 INC.W W1,W3 MOV.W W3,W1 ; MOV.W #0xC8,W3 ; LP_1 < 0xC8(200) SUB.W W1,W3,W4 BRA LEU,wat_2S BRA wat_0 ; ; (2)wat_2 wat_2S: CLR.W W2 wat_2: MOV.W #0x0001,W3 INC.W W2,W3 MOV.W W3,W2 NOP NOP NOP NOP ; MOV.W #0x64,W3 ; LP_2 < 0x64(100) SUB.W W2,W3,W4 BRA LEU,wat_2 BRA wat_1 ; ; ****************** ; 3.End ; ****************** wat_e: POP.W W5 POP.W W4 POP.W W3 POP.W W2 POP.W W1 POP.W W0 RETURN