天堂草原最受欢迎的角色,天堂动漫,天堂在线,色天堂下载,天堂中文在线资源,亚洲男人天堂

技術熱線: 4007-888-234

技術支持

ST套件上0-99秒計時

更新時間: 2019-03-23

十年專注單片機方案開發的方案公司英銳恩,分享ST套件上0-99秒計時。英銳恩現提供服務產品涉及主控芯片:8位單片機、16位單片機、32位單片機及各類運算放大器等。

;這是我學習PIC完成的第一個程序燒在了ST套件上不錯,0-99秒計時

;如果用MPLAB模擬,用stopwach計時非常準

;ST套件上0-99秒表程序,根據原0-99鍵控程序上改寫的,初學練習 ;**************************************************************** LIST P=16F84A,R=DEC ;MCU:16F84,默認數制為十進制 ;----------------------------------------------- __CONFIG B'11111111110001';_CP_OFF&_WDT_OFF&_PWRITE_ON&_XT_OSC ;沒有代碼保護 ;看門狗關閉 ;上電廷時器開啟 ;振蕩器模式為XT ;--------------------- RTCC EQU 01H ;計數器 PC EQU 02H ;程序計數器 STATUS EQU 03H ;狀態寄存器 PORTA EQU 05H PORTB EQU 06H INTCON EQU 0BH 

OPTION_REG EQU 1H ;81H TRISA EQU 5H TRISB EQU 6H ;-----------------------STATUS C EQU 0 Z EQU 2 RP0 EQU 5 ;寄存器體選 ;-------------------------INTCON T0IF EQU 2 ;定時器0溢出中斷標志位 T0IE EQU 5 ;定時器0溢出中斷允許/禁止 GIE EQU 7 ;總中斷允許/禁止 ;------------------------- TABADD EQU 13H ;轉換數碼管地址 FLAGS EQU 14H ;顯示位選標志位 DISPBUF_H EQU 15H ;顯示器秒拾位 DISPBUF_L EQU 16H ;顯示器秒個位 DIGIT EQU 1AH ;5ms計數器 W_TEMP EQU 1BH ;W現場保護寄存器 STATUS_TEMP EQU 1CH ;STATUS現場保護寄存器 ;-------------------- ORG 0000H GOTO MAIN ORG 004H TMR0SERV MOVWF W_TEMP ;現場保護 SWAPF STATUS,W ;用SWAPF才不會影響標志位 MOVWF STATUS_TEMP ;將W和STATUS存入各保護寄存器

MOVLW 100 ;送定時器初值 MOVWF RTCC BCF INTCON,T0IF ;清定時器0溢出中斷標志位

MOVLW 0FFH MOVWF PORTB ;先熄滅數碼管以免閃爍 BSF PORTA,1 BSF PORTA,2

MOVLW TABLE MOVWF TABADD ;將轉換表的首地址存入TABADD MOVFW DISPBUF_L ;計數值(W)與轉換表的起始地址相加 BTFSS FLAGS,1 ;FLAGS1位為1時,顯示低位 MOVFW DISPBUF_H ADDWF TABADD,W CALL CONVERT ;存入W后調用轉換表子程序 MOVWF PORTB ;送RB口顯示

BTFSS FLAGS,1 ;根據標志位選擇是點亮那一個數碼管 BCF PORTA,1 BTFSC FLAGS,1 BCF PORTA,2 COMF FLAGS,1 INCF DIGIT,1 MOVLW 200 ;計數值為200后不再加1 XORWF DIGIT,0 BNZ TIMEND CLRF DIGIT INCF DISPBUF_L,1 ;秒個位加1 MOVLW 10 XORWF DISPBUF_L,0 BNZ TIMEND CLRF DISPBUF_L

INCF DISPBUF_H,1 ;秒拾位加1 MOVLW 10 XORWF DISPBUF_H,0 BNZ TIMEND CLRF DISPBUF_H

TIMEND SWAPF STATUS_TEMP,W ;恢復中斷前STATUS,W的值 MOVWF STATUS SWAPF W_TEMP,F SWAPF W_TEMP,W ;(用SWAPF才不會影響STATUS的值) RETFIE ;------------------------------------------------ MAIN CLRF PORTA CLRF PORTB ;初始化IO口

BSF STATUS,RP0 ;設置寄存器體1 MOVLW 00000000B MOVWF TRISA MOVLW 00000000B MOVWF TRISB MOVLW 10000100B MOVWF OPTION_REG ;預分頻器分配給定時器0,分頻比1:32 BCF STATUS,RP0 ;恢復寄存器體0

MOVLW 100 MOVWF RTCC ;定時器送初值(256-100)*32US=4.992MS,每4.992MS一次中斷 MOVLW 0FFH ;先讓數碼管全部不顯示 MOVWF PORTB CLRF DIGIT ;顯示計數器清0 CLRF DISPBUF_L ;數碼管先顯示00 CLRF DISPBUF_H BCF INTCON,T0IF BSF INTCON,T0IE ;定時器0溢出中斷允許 BSF INTCON,GIE ;總中斷允許 ;-------------------------------------------------- LOOP GOTO LOOP ;循環掃描

CONVERT MOVWF PC ;將W寄存器內的7段顯示碼地址放入PC TABLE ;PC執行新地址指令, 跳到相對的地址執行? RETLW 081H ;0 ;RETLW指令,將七段顯示碼存入W后返回 RETLW 0E7H ;1 RETLW 092H ;2 RETLW 0A2H ;3 RETLW 0E4H ;4 RETLW 0A8H ;5 RETLW 088H ;6 RETLW 0E3H ;7 RETLW 080H ;8 RETLW 0A0H ;9 ;----- ----------------------------------------------- END

404
返回首頁 |  返回上一頁
联系我们: 高阳县| 云龙县| 黄冈市| 措勤县| 平利县| 高雄县| 江安县| 台安县| 南充市| 丰台区| 新蔡县| 珲春市| 西盟| 威远县| 玉树县| 温泉县| 金湖县| 普安县| 柘城县| 丰镇市| 江北区| 老河口市| 石渠县| 石棉县| 松滋市| 呼和浩特市| 银川市| 高淳县| 泸定县| 商南县| 耿马| 赤峰市| 东山县| 昌黎县| 嘉兴市| 舞阳县| 永昌县| 札达县| 荔波县| 油尖旺区| 九龙县|