⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 51fxa.cod

📁 mcs51,2051,x86系列MCU
💻 COD
📖 第 1 页 / 共 2 页
字号:
; Alternate Functions are Address/Data for External Memory

;   p0.0 = $%tP0_FXDIR.0$IN$OUT$         
;   p0.1 = $%tP0_FXDIR.1$IN$OUT$         
;   p0.2 = $%tP0_FXDIR.2$IN$OUT$         
;   p0.3 = $%tP0_FXDIR.3$IN$OUT$         
;   p0.4 = $%tP0_FXDIR.4$IN$OUT$         
;   p0.5 = $%tP0_FXDIR.5$IN$OUT$         
;   p0.6 = $%tP0_FXDIR.6$IN$OUT$         
;   p0.7 = $%tP0_FXDIR.7$IN$OUT$         

init_io_ports:
  mov  P0, #0$$P0$h

  ret

main:
  lcall init_io_ports
end

##80C52 IO_P1#
##80C54 IO_P1#
##80C58 IO_P1#
##80C51FA IO_P1#
##80C51FB IO_P1#
##80C51FC IO_P1#

include "51fx.inc"

; Initialize the quasi-bidirectional port pins.  To use these
; pins as inputs they must be written with a one.


; IO port pins:
;   p1.0 = $%tP1_FXDIR.0$IN$OUT$         ;Special Function T2CLK
;   p1.1 = $%tP1_FXDIR.1$IN$OUT$         ;Special Function T2EX
;   p1.2 = $%tP1_FXDIR.2$IN$OUT$         ;
;   p1.3 = $%tP1_FXDIR.3$IN$OUT$         ;
;   p1.4 = $%tP1_FXDIR.4$IN$OUT$         ;
;   p1.5 = $%tP1_FXDIR.5$IN$OUT$         ;
;   p1.6 = $%tP1_FXDIR.6$IN$OUT$         ;
;   p1.7 = $%tP1_FXDIR.7$IN$OUT$         ;

init_io_ports:
  mov  P1, #0$$P1$h

  ret

main:
  lcall init_io_ports
end

##80C52 IO_P2#
##80C54 IO_P2#
##80C58 IO_P2#
##80C51FA IO_P2#
##80C51FB IO_P2#
##80C51FC IO_P2#

include "51fx.inc"

; Initialize the quasi-bidirectional port pins.  To use these
; pins as inputs they must be written with a one.


; IO port pins:
; Alternate Functions are High Bytes of Address for External Memory

;   p2.0 = $%tP2_FXDIR.0$IN$OUT$         
;   p2.1 = $%tP2_FXDIR.1$IN$OUT$         
;   p2.2 = $%tP2_FXDIR.2$IN$OUT$         
;   p2.3 = $%tP2_FXDIR.3$IN$OUT$         
;   p2.4 = $%tP2_FXDIR.4$IN$OUT$         
;   p2.5 = $%tP2_FXDIR.5$IN$OUT$         
;   p2.6 = $%tP2_FXDIR.6$IN$OUT$         
;   p2.7 = $%tP2_FXDIR.7$IN$OUT$         

init_io_ports:
  mov  P2, #0$$P2$h

  ret

main:
  lcall init_io_ports
end



##80C52 IO_P3#
##80C54 IO_P3#
##80C58 IO_P3#
##80C51FA IO_P3#
##80C51FB IO_P3#
##80C51FC IO_P3#

include "51fx.inc"

; Initialize the quasi-bidirectional port pins.  To use these
; pins as inputs they must be written with a one.


; IO port pins:
;   p3.0 = $%tP3_FXDIR.0$IN$OUT$         ;Special Function RXD
;   p3.1 = $%tP3_FXDIR.1$IN$OUT$            ;Special Function TXD
;   p3.2 = $%tP3_FXDIR.2$IN$OUT$         ;Special Function INT0
;   p3.3 = $%tP3_FXDIR.3$IN$OUT$         ;Special Function INT
;   p3.4 = $%tP3_FXDIR.4$IN$OUT$         ;Special Function T0
;   p3.5 = $%tP3_FXDIR.5$IN$OUT$         ;Special Function T1
;   p3.6 = $%tP3_FXDIR.6$IN$OUT$         ;Special Function WR
;   p3.7 = $%tP3_FXDIR.7$IN$OUT$         ;Special Function RD

init_io_ports:
  mov  P3, #0$$P3$h

  ret

main:
  lcall init_io_ports
end



##80C52 PM#
##80C54 PM#
##80C58 PM#
##80C51FA PM#
##80C51FB PM#
##80C51FC PM#

include "51fx.inc"

; Power Management

;    - Idle Mode    = $%ePCON.0$
;    - Power Down Mode   = $%ePCON.1$

;Power down mode takes precedence over Idle Mode if both
; bits are set.

init_pm:

      $$if$ PCON.1
setb PD
      $$end$
     $$if$ PCON.0 &! PCON.1
setb IDL
    $$end$
ret


main:
      lcall init_pm
end


##80C52 Serial#
##80C54 Serial#
##80C58 Serial#
##80C51FA Serial#
##80C51FB Serial#
##80C51FC Serial#

include "51fx.inc"

;Serial Port

;Mode				= $%4SCON.6-7$0  /shift register$1  /8-bit UART$2  /9-bit UART$3  /9-bit UART$
;Serial Port Interrupt		= $%eIE.4$
$$if$  SCON.7
;9th Data Bit			= $%eSCON.3$
$$end$
;Receive			= $%eSCON.4$
;Auto Addressing		= $%eSCON.5$

init_serial:
     mov SCON, #0$$SCON$h
$$if$ SCON.6
	$$if$ T2CON.4 
;Timer 2 is being used to generate baud rates.
     mov RCAP2L, #0$$RCAP2L$h
     mov RCAP2H, #0$$RCAP2H$h
     mov T2CON, #0$$T2CON$h
	$$end$       
	$$ifn$ T2CON.4 
;Timer 1 is being used to generate baud rates.
		$$if$ PCON.7
     orl PCON, #80H
		$$end$
     mov TMOD, #0$$TMOD$h
     mov TH1, #0$$TH1$h
     setb TR1            ;TCON.6
	$$end$
	$$if$ T2CON.4 &! T2CON.5 
;Timer 1 is being used to generate baud rates.
		$$if$ PCON.7
     orl PCON, #80H
		$$end$
     mov TMOD, #0$$TMOD$h
     mov TH1, #0$$TH1$h
     setb TR1            ;TCON.6
	$$end$
	$$ifn$ T2CON.4 && T2CON.5 
;Timer 2 is being used to generate baud rates.
     mov RCAP2L, #0$$RCAP2L$h
     mov RCAP2H, #0$$RCAP2H$h
     mov T2CON, #0$$T2CON$h
	$$end$       
$$end$  
$$ifn$ SCON.6 && SCON.7
   $$if$ PCON.7
     orl PCON, #80H
   $$end$
$$end$
$$if$ IE.4
     setb ES             ;IE.4
$$end$
$$if$ SCON.4
     clr RI              ;SCON.0
$$end$
$$ifn$ SCON.4
     mov SBUF, #00H
     clr TI                        ;SCON.1
$$end$
     ret
     
main:
      lcall init_serial
end

##80C52 TIMER0#
##80C54 TIMER0#
##80C58 TIMER0#
##80C51FA TIMER0#
##80C51FB TIMER0#
##80C51FC TIMER0#

include "51fx.inc"

; Configure Timer $$TIMERX$
;    - Mode                   = $%4TMOD.0-1$0$1$2$3$
;    - Interrupt              = $%tIE.1$ENABLED$DISABLED$
;    - Clock Source           = $%tTMOD.2$EXTERNAL$INTERNAL$
;    - Enable Gating Control  = $%tTMOD.3$ENABLED$DISABLED$

init_timer$$TIMERX$:
      anl   TMOD, #0F0H		  ;clear Timer 0 
      orl   TMOD, #0$$TMOD$h  ;
      mov   TL0,  #0$$TL0$h   ;value set by user
      mov   TH0,  #0$$TH0$h   ;value set by user
$$if$ IE.1
      setb IE.1
$$end$
      setb TR$$TIMERX$   ;TCON.4 start timer
      ret

main:
      lcall init_timer$$TIMERX$
end



##80C52 TIMER1#
##80C54 TIMER1#
##80C58 TIMER1#
##80C51FA TIMER1#
##80C51FB TIMER1#
##80C51FC TIMER1#

include "51fx.inc"

; Configure Timer $$TIMERX$
;    - Mode                   = $%4TMOD.4-5$0$1$2$3$
;    - Interuppt              = $%tIE.3$ENABLED$DISABLED$
;    - Clock Source           = $%tTMOD.6$EXTERNAL$INTERNAL$
;    - Enable Gating Control  = $%tTMOD.7$ENABLED$DISABLED$

init_timer$$TIMERX$:
      anl   TMOD, #0FH		  ;clear Timer 1 control
      mov   TMOD, #0$$TMOD$h  ;
      mov   TL1,  #0$$TL1$h   ;value set by user
      mov   TH1,  #0$$TH1$h   ;value set by user
$$if$ IE.3
      setb IE.3
$$end$
      setb TR$$TIMERX$        ;TCON.6  start timer 1
      ret

main:
      lcall init_timer$$TIMERX$
end



##80C52 TIMER2#
##80C54 TIMER2#
##80C58 TIMER2#
##80C51FA TIMER2#
##80C51FB TIMER2#
##80C51FC TIMER2#

include "51fx.inc"

;The Timer is set to $%5T2MODES$No Operation$Auto Reload$Capture$BaudRate Generator$Clock Out$

$$if$ (T2MODES == 1) || (T2MODES == 2)

;Clock Source       = $%tT2CON.1$EXTERNAL$INTERNAL$
$$if$ (T2MODES == 1)
;Count Direction    = $%tT2MOD.0$UP/DOWN depending on T2EX pin$UP$
$$end$
;Reload Value by $%tT2CON.3$External Transition$Overflow$
$$end$

init_timer$$TIMERX$:
      mov   T2CON, #0$$T2CON$h
      mov   T2MOD, #0$$T2MOD$h
$$if$ (T2MODES == 1) || (T2MODES == 2)
      mov   TL2   , #00H           ;set by user
      mov   TH2   , #00H           ;set by user
      mov   RCAP2L, #00H           ;reload value low
      mov   RCAP2H, #00H           ;reload value high

$$if$ T2CON.3
     setb T2EX  ;   will allow capture or reload on negative transistion
;              also in Reload controls direction of Count.
;              logic 1 counts up    logic 0 will count down
      
$$end$
$$end$
$$if$ (T2MODES == 4)
      mov   RCAP2L, #0$$RCAP2L$h   ;Clk Out Value
      mov   RCAP2H, #0$$RCAP2H$h   ;Clk Out Value
$$end

     setb TR2       ;T2CON.2 start timer
     ret

main:
      lcall init_timer$$TIMERX$
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -