;* *
;******************************************************************************
org 0x004 ;
MOV wf w_temp ; 保护现场
MOV f STATUS,w
MOV wf status_temp
MOV f PCLATH,w
MOV wf pclath_temp
; 此处编写自已的中断处理程序
MOV f pclath_temp,w ; 恢复现场
MOV wf PCLATH
MOV f status_temp,w
MOV wf STATUS
swapf w_temp,f
swapf w_temp,w
retfie
;******************************************************************************
;* *
;* 主程序执行入口 *
;* *
;******************************************************************************
MAIN:
call INIT_PORT ; 初始化PORTA, PORTB, PORTC口寄存器
MAIN_1:
banksel base_ptr
MOV lw low(Hz_TABLE_1) ; 置显示数据基准指针
MOV wf base_ptr
MOV lw high(HZ_TABLE_1)
MOV wf base_ptr+1
MOV lw 0x03 ; 置显示控制字,红绿色,静止,居左显示
MOV wf ctrl_byte
MOV lw 0x08 ; 置总显示列宽度,4个汉字,8个字节
MOV wf row_bytes
MAIN_2:
MOV lw 0x00 ; 置显示列偏移值为0
MOV wf col_offset
MOV lw 0x00 ; 置起启显示行从Y0..Y15循环
MOV wf row_cnt
MOV f base_ptr,w
MOV wf cur_ptr
MOV f base_ptr+1,w
MOV wf cur_ptr+1
MAIN_3:
MOV fw row_bytes
MOV wf col_cnt
MAIN_4:
call GET_DATA ;获得一个字节数据
MOV wf AX
MOV f col_offset,w
MOV wf BX
MOV lw 0x08
MOV wf CX
call SHIFT_BYTE
decfsz col_cnt,f
goto MAIN_4
call LATCH_REGISTER
banksel PORTB
MOV f row_cnt,w
MOV wf PORTB
call SLEEP_MS
incf row_cnt,f
btfss row_cnt,4
goto MAIN_3
MAIN_5:
goto MAIN_2
;******************************************************************************
;* *
;* 初始化PORT寄存器 *
;* *
;******************************************************************************
INIT_PORT:
BANKSEL TRISB
clrf TRISB ; PORT B寄存器的bit<0:3>用于行计数输出
BANKSEL PORTB
MOV lw 0x10 ; PORT B的 BIT4=1 ,关闭所有LED显示
MOV wf PORTB
BANKSEL ADCON1 ; 设置PORTA寄存器为数字I/O
MOV lw 0x10
MOV wf ADCON1
BANKSEL TRISA ; 设置PORTA为数字输出寄存器
上一页 [1] [2] [3] [4] [5] 下一页
本文关键字:暂无联系方式PIC单片机,单片机-工控设备 - PIC单片机