📄 led1h.sdi
字号:
,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
,,,;
,,,; Source File: LED1H.ASM
,,,; Author: MPB
,,,; Date: 2-12-05
,,,;
,,,; Output binary count incremented
,,,; and reset with push buttons.
,,,; Uses hardware timer to debounce input switch
,,,;
,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
,,,
,,, PROCESSOR 16F877 ; Define MCU type
00002007,3733,, __CONFIG 0x3733 ; Set config fuses
,,,
,,,; Register Label Equates....................................
,,,
,,,PORTB EQU 06 ; Port B Data Register
,,,PORTD EQU 08 ; Port D Data Register
,,,TRISD EQU 88 ; Port D Direction Register
,,,
,,,TMR0 EQU 01 ; Hardware Timer Register
,,,INTCON EQU 0B ; Interrupt Control Register
,,,OPTREG EQU 81 ; Option Register
,,,
,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
,,,
,,, ORG 000 ; Start of program memory
00000000,0000,, NOP ; For ICD mode
00000001,2806,, GOTO init ; Jump to main program
,,,
,,,; Interrupt Service Routine ................................
,,,
,,, ORG 004
00000004,110B,, BCF INTCON,2 ; Reset TMR0 interrupt flag
00000005,0009,, RETFIE ; Return from interrupt
,,,
,,,; Initialise Port D (Port B defaults to inputs).............
,,,
00000006,0000,init,init NOP ; BANKSEL cannot be labelled
00000007,1683 1303,, BANKSEL TRISD ; Select bank 1
00000009,3000,, MOVLW b'00000000' ; Port B Direction Code
0000000A,0088,, MOVWF TRISD ; Load the DDR code into F86
,,,
,,,; Initialise Timer0 ........................................
,,,
0000000B,30D8,, MOVLW b'11011000' ; TMR0 initialisation code
0000000C,0081,, MOVWF OPTREG ; Int clock, no prescale
0000000D,1283 1303,, BANKSEL PORTD ; Select bank 0
0000000F,30A0,, MOVLW b'10100000' ; INTCON init. code
00000010,008B,, MOVWF INTCON ; Enable TMR0 interrupt
,,,
,,,; Start main loop ...........................................
,,,
00000011,0188,reset,reset CLRF PORTD ; Clear Port B Data
,,,
00000012,1C86,start,start BTFSS PORTB,1 ; Test reset button
00000013,2811,, GOTO reset ; and reset Port B if pressed
00000014,1906,, BTFSC PORTB,2 ; Test step button
00000015,2812,, GOTO start ; and repeat if not pressed
,,,
00000016,0181,, CLRF TMR0 ; Reset timer
00000017,1D0B,wait,wait BTFSS INTCON,2 ; Check for time out
00000018,2817,, GOTO wait ; Wait if not
00000019,1D06,stepin,stepin BTFSS PORTB,2 ; Check step button
0000001A,2819,, GOTO stepin ; and wait until released
0000001B,0A88,, INCF PORTD ; Increment output at Port B
0000001C,2812,, GOTO start ; Repeat main loop always
,,,
,,, END ; Terminate source code......
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -