INCF SEC1,F ; 將 SEC1+1 作查表取回對應數字 MOVF SEC1,W banksel STRING1 banksel PORTB RETFIE run_sec2: MOVF SEC2,W SUBLW.5 GOTO run_min ; 將秒個位數歸 0 CLRF SEC1 MOVL

Similar documents
PIC16F F MPLAB 08 16F LED 15 LED

2.5 idlocs PIC idloc idloc 0x1234 ; 0x config idloc HEX errorlevel errorlevel Error (Warning) Message HEX 3-14 errorlevel

第5章:汇编语言程序设计

AN579

文件名

C PICC C++ C++ C C #include<pic.h> C static volatile unsigned char 0x01; static volatile unsigned char 0x02; static volatile unsigned cha

第1章 ISIS编辑器指南

untitled

701PIC Introduction to PICMicro MCUs

bingdian001.com

目录

+00DE _01EN.book

Microsoft Word - 論文終極板.doc

PIC16F87X基本指令說明

untitled

AN541

untitled

ICD ICD ICD ICD ICD

12232A LED LED LED EL EL CCFL EL CCF

AN510

untitled

a b c d e f g C2 C1 2

untitled

海 南 冯 琳 峰 海 南 省 锅 炉 压 力 容 器 与 特 种 设 备 检 验 所 海 南 省 定 安 县 白 蒙 路 47 号 信 XC 内 蒙 古 冯 磊 赤 峰 市 特 种 设 备 检 验 所 内 蒙 古 赤 峰 市 红 山 区 八 里 铺 油 库 路

威 福 髮 藝 店 桃 園 市 蘆 竹 區 中 山 里 福 祿 一 街 48 號 地 下 一 樓 50,000 獨 資 李 依 純 105/04/06 府 經 登 字 第 號 宏 品 餐 飲 桃 園 市 桃 園 區 信 光 里 民

第 一 节 认 识 自 我 的 意 义 一 个 人 只 有 认 识 自 我, 才 能 够 正 确 地 认 识 到 自 己 的 优 劣 势, 找 出 自 己 的 职 业 亮 点, 为 自 己 的 顺 利 求 职 推 波 助 澜 ; 一 个 人 只 有 认 识 自 我, 才 能 在 求 职 中 保 持

untitled

Microsoft Word - 11.doc

上海浦~1

第一章

untitled

untitled

了 波 涛 和 号 声 袁 读 者 很 容 易 就 进 入 广 州 城 的 水 上 旅 途 袁 进 入 一 座 野 水 上 名 城 冶 的 传 说 中 去 遥 于 是 袁 一 座 名 城 往 事 充 满 了 漂 流 感 袁 旋 律 自 水 上 而 来 袁 我 们 就 这 样 来 到 了 往 事 的

壹、摘 要

untitled

Microsoft Word - LD5515_5V1.5A-DB-01 Demo Board Manual

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit

第 二 章 古 代 慢 慢 睁 开 眼 睛, 我 的 面 前 出 现 一 个 女 孩 子, 大 约 十 六 七 岁, 身 穿 淡 绿 色 布 裙, 头 上 两 个 小 圆 髻 特 别 娇 俏 可 爱 医 院 什 么 时 候 出 现 这 么 一 个 可 爱 的 古 装 护 士 啊! 这 医 院 真 有

Tel:

学习MSP430单片机推荐参考书

<4D F736F F D D342D3231D2C7B1EDCCD6C2DBB8E5B1E0D6C6CBB5C3F72E646F63>

ATMEL AT90S8515 AVR CPU AVR AVR AVR ATMEL RISC 32 8 r0 r X Y Z R0 R1 R2 R13 R14 R15 R16 R17 R26 R27 R28 R29 R30 R31 0x00 0x


操作指导手册

ebook14-4

Microsoft Word - MSP430 Launchpad 指导书.docx

JLX

Model P53 pH-ORP Analyzer CH.doc

行业

T

<4D F736F F D20B3E6B4B9A4F930365F32A443AC71C5E3A5DCBEB9B1B1A8EE2E646F63>

創 作 動 機 因 未 成 年 懷 孕 的 案 例 從 國 中 時 期 就 在 身 邊 屢 屢 發 生, 這 意 外 中 的 小 生 命 會 讓 一 個 人 或 說 是 一 對 父 母 的 人 生 產 生 劇 烈 衝 擊, 先 不 談 是 否 成 全 生 命 的 誕 生, 往 往 就 在 社 會 倫

C语言的应用.PDF

AL-M200 Series

LBS 行 200 /0 /2 3. 行 ALFA AUTO. MACHINERY CO. LTD

untitled

TSI 8384/8385/8386 Manual

目 录

FY.DOC

LK110_ck

科学计算的语言-FORTRAN95

安全防范

B 6 A A N A S A +V B B B +V 2

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor

全国计算机技术与软件专业技术资格(水平)考试

2 12

概述

Microsoft Word - ~ doc

行业

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.07.doc

穨2700使用手冊.doc

座號

PIC8位单片机汇编语言常用指令的识读(上)

什麼是 MPASM MPASM 就是 Microchip PICmicro Assembler 單一原始檔案格式 將組合語言直接翻譯成 hex 格式的機械碼 多原始檔案格式 將組合語言翻譯成 object 格式的檔案, 該檔案須經連結器 (linker) 再產生 hex 格式的機械碼 2003 Mi

Microsoft PowerPoint - PIC18F_39th設計競賽 [相容模式]

User ID 150 Password - User ID 150 Password Mon- Cam-- Invalid Terminal Mode No User Terminal Mode No User Mon- Cam-- 2

D 江 苏 汉 邦 建 设 集 团 有 限 公 司 江 苏 邦 实 建 设 工 程 有 限 公 司

PICkit2 LPC

() () () () () () () () DDRAM () II

Transcription:

;************************************************ ; Null Clock REV:1.0 by Jed ; www.xuan.idv.tw ;************************************************ INCLUDE P16F84A.INC LIST P=16F84A,R=Dec CONFIG _XT_OSC&_WDT_OFF ;---------DEFINE CONSTANT-------------------------- RS EQU 0 RD_WR EQU 1 EN EQU 2 ;---------DEFINE DATA RAM-------------------------- TEMP equ 0x12 STACK equ 0x13 PTR equ 0x14 SEC1 equ 0x15 MIN1 equ 0x16 HUR1 equ 0x17 SEC2 equ 0x18 MIN2 equ 0x19 HUR2 equ 0x1A CNT EQU 0x1B HUR24 equ 0x1C DLY1 EQU 0x1D DLY2 EQU 0x1E DLY3 EQU 0x1F TEMP1 EQU 0X20 ORG 0x00 goto main ;Interrupt vector ORG 0x04 MOVLW 256-196 ; 重設 TMR0 內容 MOVWF TMR0 BCF INTCON,T0IF ; 清除中斷旗號 DECFSZ CNT ; 檢查是否中斷 20 次 RETFIE ;50ms*20~=1S MOVLW.20 MOVWF CNT run_sec: MOVF SEC1,W SUBLW.9 GOTO run_sec2 設定 LCD 對應顯示位址 ( 秒個位數 ) 1

INCF SEC1,F ; 將 SEC1+1 作查表取回對應數字 MOVF SEC1,W banksel STRING1 banksel PORTB RETFIE run_sec2: MOVF SEC2,W SUBLW.5 GOTO run_min ; 將秒個位數歸 0 CLRF SEC1 MOVLW 10001001B ;0X09 設定 LCD 對應顯示位址 ( 秒十位數 ) INCF SEC2,F MOVF SEC2,W RETFIE run_min: MOVF MIN1,W SUBLW.9 GOTO run_min2 ; 將秒數歸零 CLRF SEC1 CLRF SEC2 2

設定 LCD 對應顯示位址 ( 分個位數 ) INCF MIN1,F ; 將 MIN1+1 作查表取回對應數字 MOVF MIN1,W RETFIE run_min2: MOVF MIN2,W SUBLW.5 GOTO run_hur CLRF SEC1 CLRF SEC2 CLRF MIN1 MOVLW 10000110B ;0x06 設定 LCD 對應顯示位址 ( 分十位數 ) INCF MIN2,F MOVF MIN2,W RETFIE run_hur: MOVF HUR24,W SUBLW.23 GOTO clr_time MOVF HUR1,W 3

SUBLW.9 GOTO run_hur2 CLRF SEC1 CLRF SEC2 CLRF MIN1 CLRF MIN2 MOVLW 10000110B ;0x06 MOVLW 10000100B ;0x04 設定 LCD 對應顯示位址 ( 時各位數 ) INCF HUR1,F MOVF HUR1,W INCF HUR24,F RETFIE run_hur2: CLRF SEC1 CLRF SEC2 CLRF MIN1 CLRF MIN2 CLRF HUR1 4

MOVLW 10000110B ;0x06 MOVLW 10000100B ;0x04 MOVLW 10000011B ;0x03 INCF HUR24,F INCF HUR2,F MOVF HUR2,W RETFIE STRING1: ADDWF PCL DT "0123456789" retlw 00 main: BSF STATUS,RP0 ;set porta as output MOVLW 11111000B MOVWF TRISA MOVLW 11010111B ; 設定預除值 MOVWF OPTION_REG BCF STATUS,RP0 CALL INIT_LCD ;start lcd module MOVLW 00000001B ;CLEAR LCD MOVLW.20 MOVWF CNT ; 將時分秒變數歸 0 5

MOVLW.0 MOVWF SEC1 MOVLW.0 MOVWF SEC2 MOVLW.0 MOVWF MIN1 MOVLW.0 MOVWF MIN2 MOVLW.0 MOVWF HUR1 MOVLW.0 MOVWF HUR2 MOVLW.0 MOVWF HUR24 ; 設定初始畫面 00:00:00 MOVLW 10000011B ;0x03 MOVLW 10000100B ;0x04 MOVLW 10000101B ;0x05 MOVLW ':' MOVLW 10000110B ;0x06 MOVLW 10001000B ;0x08 MOVLW ':' D:\MCU\DS1820\main.ASM 6

MOVLW 10100000B ; 接受中斷 ; 接受 TMR0 溢位中斷 MOVWF INTCON GOTO chk_set -- ; 初始化程序完成 -- MAIN2: MOVLW 10000000B ; 將 E 字取消 MOVLW ' ' BSF INTCON,7 ; 致能中斷總開關 chk_set: btfss PORTA,4 ; 檢查 PORTA4 是否為 0 goto set_mode ; 是, 進入設定模式 goto chk_set ; 否, 返回重新偵測 set_mode: ; 按住 5 秒進入設定模式 MOVLW.250 call DELAY btfsc PORTA,4 ; 防止開關彈跳 goto chk_set ; 以及確認三秒進入設定模式 ; 進入設定模式 BCF INTCON,7 ; 解除中斷總開關 MOVLW 10000000B ;0X00 顯示 E 代表進入設定模式 MOVLW 'E' ; 秒數閃爍兩下 MOVLW.2 SEC_SET: MOVLW ' ' 7

MOVLW ' ' MOVLW.25 MOVF SEC1,W MOVF SEC2,W MOVLW.25 DECFSZ TEMP1,F GOTO SEC_SET MOVLW.50 SEC_SET1: BTFSS PORTA,4 GOTO CHANG_SEC MOVLW.5 DECFSZ TEMP1,F GOTO SEC_SET1 GOTO MIN_SET ; 超過等待時間跳到更改分時間 CHANG_SEC: MOVLW.5 BTFSC PORTA,4 GOTO SEC_SET1 ; 防止機械彈跳 ; 更改秒數程序 MOVLW.10 call chg_sec ; 程序更改結束 MOVLW.50 GOTO SEC_SET1 8

; 分閃爍 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; MIN_SET MOVLW.2 MIN_SET1: MOVLW ' ' MOVLW 10000110B ;0x06 MOVLW ' ' MOVLW.25 MOVF MIN1,W MOVLW 10000110B ;0x06 MOVF MIN2,W MOVLW.25 DECFSZ TEMP1,F GOTO MIN_SET1 MOVLW.50 MIN_SET2: BTFSS PORTA,4 GOTO CHANG_MIN MOVLW.5 DECFSZ TEMP1,F GOTO MIN_SET2 GOTO HUR_SET ; 超過等待時間跳到更改時時間 CHANG_MIN: MOVLW.5 9

BTFSC PORTA,4 GOTO MIN_SET2 ; 防止機械彈跳 ; 更改分數程序 MOVLW.10 call chg_min ; 程序更改結束 MOVLW.50 GOTO MIN_SET2 ; 時閃爍 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; HUR_SET MOVLW.2 HUR_SET1: MOVLW 10000100B ;0x04 MOVLW ' ' MOVLW 10000011B ;0x03 MOVLW ' ' MOVLW.25 MOVLW 10000100B ;0x04 MOVF HUR1,W MOVLW 10000011B ;0x03 MOVF HUR2,W MOVLW.25 DECFSZ TEMP1,F GOTO HUR_SET1 MOVLW.50 HUR_SET2: 10

BTFSS PORTA,4 GOTO CHANG_HUR MOVLW.5 DECFSZ TEMP1,F GOTO HUR_SET2 GOTO MAIN2 ; 超過等待時間跳出設定模式 CHANG_HUR: MOVLW.5 BTFSC PORTA,4 GOTO HUR_SET2 ; 防止機械彈跳 ; 更改時數程序 MOVLW.10 call chg_hur ; 程序更改結束 MOVLW.50 GOTO HUR_SET2 ; 秒更改程序 ----------------------------------------------- chg_sec: MOVF SEC1,W SUBLW.9 GOTO chg_sec2 設定 LCD 對應顯示位址 ( 秒個位數 ) INCF SEC1,F ; 將 SEC1+1 作查表取回對應數字 MOVF SEC1,W banksel STRING1 banksel PORTB chg_sec2: MOVF SEC2,W SUBLW.5 GOTO chg_sec_over ;over value ; 將秒個位數歸 0 CLRF SEC1 11

MOVLW 10001001B ;0X09 設定 LCD 對應顯示位址 ( 秒十位數 ) INCF SEC2,F MOVF SEC2,W chg_sec_over: CLRF SEC1 CLRF SEC2 ; 分更改程序 ----------------------------------------------- chg_min: MOVF MIN1,W SUBLW.9 GOTO chg_min2 設定 LCD 對應顯示位址 ( 分個位數 ) INCF MIN1,F ; 將 MIN1+1 作查表取回對應數字 MOVF MIN1,W chg_min2: MOVF MIN2,W SUBLW.5 GOTO chg_min_over CLRF MIN1 12

MOVLW 10000110B ;0x06 設定 LCD 對應顯示位址 ( 分十位數 ) INCF MIN2,F MOVF MIN2,W chg_min_over: CLRF MIN1 CLRF MIN2 MOVLW 10000110B ;0x06 ; 時更改程序 ----------------------------------------------- chg_hur: MOVF HUR24,W SUBLW.23 GOTO chg_hur_over MOVF HUR1,W SUBLW.9 GOTO chg_hur2 MOVLW 10000100B ;0x04 設定 LCD 對應顯示位址 ( 時各位數 ) INCF HUR1,F MOVF HUR1,W INCF HUR24,F chg_hur2: CLRF HUR1 MOVLW 10000100B ;0x04 13

MOVLW 10000011B ;0x03 INCF HUR24,F INCF HUR2,F MOVF HUR2,W chg_hur_over: clrf HUR24 CLRF HUR1 CLRF HUR2 MOVLW 10000100B ;0x04 MOVLW 10000011B ;0x03 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; DLY1 SET ;OSC:4MHz ;1MC=(1/(4000000/4))=0.000001=1us ;DLY1 is 50=B'00110010' = 1s ; is 25=B'00011001' = 0.5s ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DELAY: ; MOVLW.250;1MC(250) ; ;1MC MOVLW.250 ;20*1MC(250) MOVWF DLY2 ;20*1MC INNER2: MOVLW.25 ;20*250*1MC(25) MOVWF DLY3 ;20*250*1MC(25) INNER1: DECFSZ DLY3,1 ;20*25*250*1MC GOTO INNER1 ;20*25*250*2MC DECFSZ DLY2,1 ;250*20*1MC GOTO INNER2 ;250*20*2MC DECFSZ DLY1,1 ;5*1MC GOTO DELAY ;2MC 14

RETURN ;1MC clr_time: CLRF SEC1 CLRF SEC2 CLRF MIN1 CLRF MIN2 CLRF HUR1 CLRF HUR2 CLRF HUR24 ; 設定初始畫面 00:00:00 MOVLW 10000011B ;0x03 MOVLW 10000100B ;0x04 MOVLW 10000101B ;0x05 MOVLW ':' MOVLW 10000110B ;0x06 MOVLW 10001000B ;0x08 MOVLW ':' 15

RETFIE INIT_LCD: MOVLW 00101000B MOVLW 00001110B MOVLW 00000110B RETURN CHK_BUSY: CALL READ_IR BTFSC TEMP,7 GOTO CHK_BUSY RETURN - READ_IR: BSF STATUS,RP0 ;SELECT BANK 1 MOVLW 11111111B ;SET PORTB INPUT MODE MOVWF TRISB BCF STATUS,RP0 ;RETURN TO BANK 0 BCF PORTA,RS ;SELECT INSTRUCTION REGISTER BSF PORTA,RD_WR ;READ MODE BSF PORTA,EN ;SET ENABLE LINE MOVF PORTB,W ;READ DATA IN W REGISTER BCF PORTA,EN ;CLEAR ENABLE LINE ANDLW 11110000B MOVWF TEMP ; BSF PORTA,EN ;SET ENABLE LINE MOVF PORTB,W ;READ DATA IN W REGISTER BCF PORTA,EN ;SET ENABLE LINE ANDLW 11110000B SWAPF TEMP IORWF TEMP SWAPF TEMP RETURN WRITE_IR: CALL CHK_BUSY BSF STATUS,RP0 ;SELECT BANK 1 16

MOVLW 00001111B ;SET PORTB OUTPUT MODE MOVWF TRISB BCF STATUS,RP0 ;RETURN TO BANK 0 BCF PORTA,RS ;SELECT INSTRUCTION REGISTER BCF PORTA,RD_WR ;WRITE MODE BSF PORTA,EN ;SET ENABLE LINE MOVF STACK,W ;WRITE HIGH NIBBLE MOVWF PORTB ;WRITE DATA TO INS. REGISTER BCF PORTA,EN ;CLEAR ENABLE LINE BSF PORTA,EN ;SET ENABLE LINE SWAPF STACK,W ;WRITE LOW NIBBLE MOVWF PORTB ;WRITE DATA TO INS. REGISTER BCF PORTA,EN ;CLEAR ENABLE LINE RETURN WRITE_DR: CALL CHK_BUSY BSF STATUS,RP0 ;SELECT BANK 1 MOVLW 00001111B ;SET PORTB OUTPUT MODE MOVWF TRISB BCF STATUS,RP0 ;RETURN TO BANK 0 BSF PORTA,RS ;SELECT DATA REGISTER BCF PORTA,RD_WR ;WRITE MODE BSF PORTA,EN ;SET ENABLE LINE MOVF STACK,W ;WRITE HIGH NIBBLE MOVWF PORTB ;WRITE DATA TO INS. REGISTER BCF PORTA,EN ;CLEAR ENABLE LINE ; BSF PORTA,EN ;SET ENABLE LINE SWAPF STACK,W ;WRITE LOW NIBBLE MOVWF PORTB ;WRITE DATA TO INS. REGISTER BCF PORTA,EN ;CLEAR ENABLE LINE RETURN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; END 17