tool_udv_cp02_num1(M)

;********************TOOL_UDV_CP02********************************************
;                    TITLE  "TOOL_UDV_CP02.ASM"
;                    DATE    2006/05/01
                     PROCESSOR          16F73
;*****************************************************************************
;                    BANK SPECIAL  REGISTERS(特殊暂存器库)
;*****************************************************************************
INDEX                EQU           00H
RTCC                 EQU           01H             ;即时时间/事件记数器.
PCL                  EQU           02H             ;程式计数器的低8位元.
;*****************************************************************************
PSW                  EQU           03H             ;程序状态暂存器.
CF                   EQU           0               ;进位旗标
DCF                  EQU           1               ;半进位旗标
ZF                   EQU           2               ;零位旗标
PDF                  EQU           3               ;电源下降旗标
TOF                  EQU           4               ;计时超时旗标
PA0                  EQU           5               ;分页预选位元
PA1                  EQU           6               ;分页预选位元
IPA                  EQU           7             
;*****************************************************************************
FSR                  EQU           04H             ;档案选择暂存器
BK0                  EQU           5
BK1                  EQU           6
;*****************************************************************************
RA                   EQU           05H             ;RA暂存器
SP                   EQU           0               ;OUTPUT
BOTTON_SELECT        EQU           1               ;INPUT
BOTTON_SELECT1       EQU           2               ;INPUT
SW                   EQU           3               ;OUTPUT
USB_KB               EQU           4               ;OUTPUT
USB_MS               EQU           5               ;OUTPUT
;******************************************************************************
RB                   EQU           06H             ;RB暂存器
MIC1                 EQU           0               ;OUTPUT
MIC2                 EQU           1               ;OUTPUT
SEG_DAT              EQU           2               ;OUTPUT
SEG_CLK              EQU           3               ;OUTPUT
SEG_CLR              EQU           4               ;OUTPUT
UN_USE0              EQU           5             
UN_USE1              EQU           6
C1                   EQU           7               ;OUTPUT
;*******************************************************************************
RC                   EQU           07H             ;RC暂存器
_D0                  EQU           0              
_D1                  EQU           1
_D2                  EQU           2    
_D3                  EQU           3    
_D4                  EQU           4    
_D5                  EQU           5
_RX                  EQU           6
_TX                  EQU           7
;*******************************************************************************
PCLATH               EQU           0AH             ;PROGRAM COUNTER HIGH BYTE
SUB_0                EQU           0
SUB_1                EQU           1
SUB_2                EQU           2
PG0                  EQU           3
PG1                  EQU           4
;*******************************************************************************
;*                   BANK0   GENEARL  PURPOSE  REGISTERS(普通用途暂存器库0)
;*******************************************************************************
K21REG               EQU           21H
K22REG               EQU           22H
K23REG               EQU           23H
K24REG               EQU           24H
K25REG               EQU           25H
K26REG               EQU           26H
K27REG               EQU           27H
K28REG               EQU           28H
K29REG               EQU           29H
;*******************************************************************************
K2AREG               EQU           2AH
K2BREG               EQU           2BH
K2CREG               EQU           2CH
K2DREG               EQU           2DH
K2EREG               EQU           2EH
K2FREG               EQU           2FH
K30REG               EQU           30H
K31REG               EQU           31H
;*******************************************************************************
;                  ALL BANKS COMMON REGISTERS(所有暂存器库的共用暂存器)
;*******************************************************************************
K70REG               EQU           70H
REG_0                EQU            0
REG_1                EQU            1
REG_2                EQU            2
REG_3                EQU            3
REG_4                EQU            4
REG_5                EQU            5
REG_6                EQU            6
REG_7                EQU            7
;*******************************************************************************
TEMP0                EQU           71H
TEMP1                EQU           72H
TEMP2                EQU           73H
TEMP3                EQU           74H
PORT_NUMBER          EQU           75H
TEMP5                EQU           76H
;*******************************************************************************
TIMER0               EQU           77H
TIMER1               EQU           78H
TIMER2               EQU           79H
TIMER3               EQU           7AH
TIMER4               EQU           7BH
;*******************************************************************************
TEMP6                EQU           7CH
TEMP7                EQU           7DH
;*******************************************************************************
TEMP8                EQU           7EH
TEMP9                EQU           7FH
;*******************************************************************************
;                    BANK1  SPECIAL REGISTERS   (暂存器库1中的专用暂存器)
;*******************************************************************************
OPT_R                EQU           81H
PS0                  EQU           0
PS1                  EQU           1
PS2                  EQU           2
PSA                  EQU           3
TOSE                 EQU           4
TOCS                 EQU           5
INTEDG               EQU           6
RBPU                 EQU           7
;*******************************************************************************
TRISA                EQU           85H
TRISB                EQU           86H
TRISC                EQU           87H
;*******************************************************************************
;            UNIVERSAL  SYNCHRONOUS ASYNCHRONOUS RECEIVER TRANMITTER,UASRT
;         (通用的     同步的   异步的 接收器)
;*******************************************************************************
TXSTA                EQU           98H            ;TXSRA
TX9D                 EQU           0              ;PRINTER PORT DATA
TRMT                 EQU           1
BRGH                 EQU           2
Unimplemented        EQU           3
SYNC                 EQU           4
TXEN                 EQU           5
TX9                  EQU           6
CSRC                 EQU           7
;*******************************************************************************
PIE1                 EQU           8CH                ;TXSRA
TXIE                 EQU           4
RCIE                 EQU           5
;*******************************************************************************
PIR1                 EQU           0CH                ;RXSRA
TXIF                 EQU           4
RCIF                 EQU           5
;*******************************************************************************
RCSTA                EQU           18H                ;RXSRA
RX9D                 EQU           0                  ;PRINTER PORT DATA
OERR                 EQU           1
RERR                 EQU           2
ADDEN                EQU           3
CREN                 EQU           4
SREN                 EQU           5
RX9                  EQU           6
SPEN                 EQU           7
;*******************************************************************************
TXREG                EQU           19H
SPBRG                EQU           99H
RCREG                EQU           1AH
;*******************************************************************************
ADCON1               EQU           9FH            ;Port A Analog/Digital Define Controller
BIT_0                EQU           0              ;(Port A 模拟/数字定义控制器)
BIT_1                EQU           1
BIT_2                EQU           2
BIT_3                EQU           3
BIT_4                EQU           4
BIT_5                EQU           5
BIT_6                EQU           6
BIT_7                EQU           7
;*******************************************************************************
;                     RTCC   TABLE
;*******************************************************************************
RF0                  EQU           0
RF1                  EQU           1
RF2                  EQU           2
RF3                  EQU           3
RF4                  EQU           4
RF5                  EQU           5
RF6                  EQU           6
RF7                  EQU           7
;*******************************************************************************
PAGE0                EQU           0005H
PAGE1                EQU           0800H          ;MIAN PROGRAM PIC 16F73
RST_87               EQU           0000H          ;STARTING REGISTER AT 0000H
;*******************************************************************************
PORT_MAIN            EQU           2
;*******************************************************************************
                     ORG           RST_87
                     GOTO          MAIN_INIT
;*******************************************************************************   
;LED灯显示副程式
SCODE
                  CLRF        PCLATH
                  ADDWF       PCL
                  RETLW       06H ;60H   init            ;0
                  RETLW       06H ;60H   1port          ;1
                  RETLW       0CBH ;0B6H  2port            ;2
                  RETLW       0FFH   ;60H          ;3
                  RETLW       99H              ;4
                  RETLW       92H              ;5
                  RETLW       82H              ;6
                  RETLW       0F8H             ;7
                  RETLW       80H              ;8
                  RETLW       90H              ;9
                  RETLW       88H              ;A
                  RETLW       83H              ;B    
                  RETLW       0C6H             ;C
                  RETLW       0A1H             ;D
                  RETLW       86H              ;E
                  RETLW       8EH              ;F
SHOWDISPLAY
        BSF      RB,SEG_DAT
                 BCF    RB,SEG_CLR          ;clear display
        BSF    RB,SEG_CLR
  
                  MOVF        PORT_NUMBER,W
                  ANDLW       0FH
                  CALL        SCODE
                  MOVWF       TEMP6
                  MOVLW       08H
                  MOVWF       TEMP7
SHOWDISPLAY1
                  BSF         RB,SEG_DAT
                  BTFSC       TEMP6,7
                  BCF         RB,SEG_DAT
                  BCF         RB,SEG_CLK
                  BSF         RB,SEG_CLK
                  RLF         TEMP6
                  DECFSZ      TEMP7,1
                  GOTO        SHOWDISPLAY1
                  RETLW       0               
;LED灯显示副程式结束
;*******************************************************************************
;B声副程式开始
BEEP 
                  BSF         RA,SP            ;SET speaker on
BEP0
                  CLRF        RTCC
BEP1
                  BTFSS       RTCC,RF7
                  GOTO        BEP1
                  BCF         RA,SP
                  RETLW       0
;B声副程式结束.返回调用处.
;*******************************************************************************
;延迟副程式开始
ONE_SECOND                                           
                  MOVLW       0EH   
                  MOVWF       TIMER1
                  BTFSC       TEMP5,3
                  GOTO        LOOP1
                  MOVLW       01H  
                  MOVWF       TIMER1
 
LOOP1             MOVLW       08FH
                  MOVWF       TIMER2
LOOP2             MOVLW       0FFH
                  MOVWF       TIMER3
LOOP3             DECFSZ      TIMER3
                  GOTO        LOOP3
                  DECFSZ      TIMER2
                  GOTO        LOOP2
                  DECFSZ      TIMER1
                  GOTO        LOOP1
                  RETLW       0H
;延迟副程式结束,返回调用处.                                                             
;*******************************************************************************
;开始进行初始化
MAIN_INIT
                     CLRF          PSW           ;PSW暂存器的5,6位元决定了使用哪个暂存器库中的暂存器
                     CLRF          FSR           ;FSR暂存器决定选择哪个暂存器库.
                     CLRF          PCLATH        ;PCLATH暂存器是储存程式计数器的高位元.                    
                     BSF           PSW,PA0       ;CHANGE REGISTERS BANK TO 2ND
                     MOVLW         87H           ;10000111
                     MOVWF         OPT_R         ;SET RTCCTIMER SCALE TO 128US EACH STUP
                     MOVLW         07H           ;0000011
                     MOVWF         ADCON1        ;DEFINE PORTA IS digital i/0
                     MOVLW         06H           ;00000110
                     MOVWF         TRISA                
                     MOVLW         00H
                     MOVWF         TRISB
                     MOVLW         00H
                     MOVWF         TRISC
                     BCF           PSW,PA0
;*******************************************************************************
                     BSF           RA,BOTTON_SELECT
                     BSF           RA,BOTTON_SELECT1
                     BCF           RA,SW
                     BSF           RA,USB_KB
      BSF          RA,USB_MS
      BSF           RC,_D4
                     BCF           RA,SP

                     BSF           RB,MIC1
                     BSF           RB,MIC2
                     BCF           RB,C1
                    
                     CLRF          TEMP6
                     CLRF          TEMP7
                     BSF           RB,SEG_DAT
                     BCF           RB,SEG_CLK
                     BSF           RB,SEG_CLK
                     CLRF          PORT_NUMBER
                     CALL          SHOWDISPLAY
;初始化结束,进入主循环
;;*******************************************************************************   
                     CALL          BEEP                     ;重置后,叫一声.                  
;*******************************************************************************   
;开始主循环TX        
TX      
;                  BSF           RA,USB_KB
              CLRF        TEMP1                  ;使用TEMP1暂存器来储存RA的状态.
                  MOVF        RA,0    ;READ
                  MOVWF       TEMP1
                  BTFSS       TEMP1,2                ;按了BOTTON_SELECT1
                  GOTO        TX_1
                  BTFSS       TEMP1,1                ;按了BOTTON_SELECT
                  GOTO        TX_0
        GOTO  TX
                    
;主循环结束.返回TX处继续进行循环.侦测到低电位则跳到分支循环.
;***********************************************************
;开始进行分支循环. 
TX_1
                  MOVF        RA,0
                  MOVWF       TEMP1
                  BTFSS       TEMP1,2                 ;按了BOTTON_SELECT1
                  GOTO        TX_1
                  GOTO        BOTTON_1   
TX_0      
        MOVF        RA,0
                  MOVWF       TEMP1
                  BTFSS       TEMP1,1                 ;按了BOTTON_SELECT
                  GOTO        TX_0
                  GOTO        BOTTON_0
;分支循环结束.返回继续进行分支循环.侦测到高电位则跳到指定的按钮功能副程式处.
;*******************************************************************************
;*******************************************************************************
;按了BOTTON_SELECT1按钮.            
BOTTON_1
                  MOVLW       05H
                  MOVWF       TEMP2
BOTTON_1_0
                  BSF         RB,MIC1
                  BSF         RB,MIC2
                  CALL        ONE_SECOND 
                  BCF         RB,MIC1
                  BCF         RB,MIC2  
                  CALL        ONE_SECOND
                  DECFSZ      TEMP2,1                 ;使用TEMP2来决定闪烁的次数.
                  GOTO        BOTTON_1_0
                  BSF         RB,MIC1
                  BSF         RB,MIC2
                  GOTO        TX
;BOTTON_SELECT1按钮功能执行完毕.返回主循环.
;******************************************************************************* 
;按了BOTTON_SELECT按钮.
BOTTON_0 
   CLRF       TEMP3          
                  MOVF        RB,0
                  MOVWF       TEMP3                   ;使用TEMP3暂存器来储存RB的状态.
                  BTFSC       TEMP3,7
                  GOTO        SET_LOW
                  BSF         RB,C1
                  MOVLW       02H
                  MOVWF       PORT_NUMBER
                ;  CALL        SHOWDISPLAY
                  GOTO        SET_SW
SET_LOW           BCF         RB,C1
                  MOVLW       01H
                  MOVWF       PORT_NUMBER
                ;  CALL        SHOWDISPLAY
                  GOTO        SET_SW
SET_SW
                  BSF         RA,SW
                  CALL        SHOWDISPLAY
                  MOVF        RA,0
                  MOVWF       TEMP5                   ;使用TEMP5暂存器来存储RA的状态.
                  CALL        ONE_SECOND
                  BCF         RA,SW
                  GOTO        TX 
;BOTTON_SELECT按钮功能执行完毕. 返回主循环.
;*******************************************************************************  
         END
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值