新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > EM78P153定時器的應用

EM78P153定時器的應用

作者: 時間:2016-11-13 來源:網(wǎng)絡 收藏
義隆單片機定時器的使用,以EM78P153為例,練習了下TCC內(nèi)部定時的使用。選了個現(xiàn)成的電路做調(diào)試來做練習。

具體電路如下:

本文引用地址:http://butianyuan.cn/article/201611/316076.htm

源程序:

/*******************************************************

em78p153 TCC內(nèi)部定時器的學習

DAT=P61 CLK=P60 KON=P62 K_UP K_DOWN LED1=P51 LED2=P52

*******************************************************/

;*********************寄存器及變量定義****************************

R0 EQU 0X00 ;間接地址寄存器

TCC EQU 0X01 ;計時,計數(shù)器

CONT EQU 0X01 ;控制寄存器

PC EQU 0X02 ;程序計數(shù)器

STATUS EQU 3 ;狀態(tài)寄存器

Z_FLAG EQU 2 ;零標志位

C_FLAG EQU 0 ;進位標志位

;***************************************************************

IOC5 EQU 0X05

PORT5 EQU 0x05

;**************************************************************

IOC6 EQU 0X06

PORT6 EQU 0x06

;**************************************************************

IOCB EQU 0X0B ;下拉控制寄存器

IOCC EQU 0X0C ;開漏控制寄存器

IOCD EQU 0X0D ;上拉控制寄存器

IOCE EQU 0X0E ;WDT控制寄存器

RF EQU 0X0F ;中斷屏蔽寄存器

IOCF EQU 0X0F

NUM==0X20

LP_CNT0==0X21

LP_CNT1==0X22

DATA==0X23

SEND_BIT_NUM==0X24

LEDH==0X26

LEDL==0X25

TCC_Count EQU 0X2F

;************************************************************

BACC EQU 0X2D ;ACC備份寄存器

BSTATUS EQU 0X2E ;STATUS備份寄存器

;**********************************************************

ORG 00H

JMP START

ORG 0008H

JMP INT_TCC ;進入中斷

TABLE:

ADD PC,A

RETL 0X11;0

RETL 0XDB;1

RETL 0X23;2

RETL 0X43;3

RETL 0XC9;4

RETL 0X45;5

RETL 0X05;6

RETL 0XD3;7

RETL 0X01;8

RETL 0X41;9

RETL 0X11;9

START:

CALL INITAITE ;程序開始前的初始化

BS PORT5,1

BS PORT5,2

MOV A,@0X00 ;give the first data to TB_NUM

MOV LEDH ,A

MOV LEDL ,A

;;;;;;;;;;;;;;;;;;;;;

ST:

BS PORT5,1

BC PORT5,2

MOV A,LEDH

CALL TABLE

MOV DATA,A

CALL SEND

CALL DELAYMS

BS PORT5,2

BC PORT5,1

MOV A,LEDL

CALL TABLE

MOV DATA,A

CALL SEND

CALL DELAYMS

BC STATUS,C_FLAG ;進位清零

;;;;;judge TB_NUMData;;;;;;;;

MOV A,LEDL

SUB A,@0x09

JBS STATUS,C_FLAG

JMP RESET

JMP ST

;;;;;;;;;;;;;;;

RESET:

MOV A,@0X00 ;give the first data to TB_NUM

MOV LEDL ,A

INC LEDH

JMP ST

;;***********************************************

;;***********74hc164 send*************************

SEND: MOV A,@8 ;one data=8 Bit

MOV SEND_BIT_NUM,A

SEND_LOOP:

RLC DATA ;Send The Data

JBC STATUS,0 ;DATA=1

BS PORT6,1

JBS STATUS,0 ;DATA=0

BC PORT6,1

BC PORT6,0 ;do Clock

NOP

BS PORT6,0

DJZ SEND_BIT_NUM ;for 8 loops

JMP SEND_LOOP

RET

;;*******************************************

INITAITE:

MOV A,@0B00000100 ;預分頻器分給TCC,分頻比為 1:8

CONTW ;上升沿觸發(fā),內(nèi)部時鐘源,中斷屏蔽。

;P54當I/O口用時,TS_bit5必須為0

MOV A,@0B11111000 ;P5口定義為輸出,輸入口: 1為輸入 ,0為輸出

IOW IOC5

MOV A,@0B00111100 ;P6口定義為輸出口: 0為輸出 ,1為高阻狀態(tài)

IOW IOC6

MOV A,@0B11111111 ;設置P60口,為下拉: 0為下拉使能 1為下拉禁止

IOW IOCB ;bit0_P50 bit1_P51 bit2_P52

;bit4_P60 bit5_P61 bit6_P62

MOV A,@0B00000000 ;開漏控制寄存器: 1為使能 ,0為禁止

IOW IOCC

MOV A,@0B00110001 ;上拉控制寄存器: 0為使能 ,1為禁止

IOW IOCD ;bit0=P60 ,bit1=P61 ,bit2=P62 ,bit3

;bit4=P64 ,bit5=P65 ,bit6=P66 ,bit7=P67

MOV A,@0B00000000 ;WDT控制寄存器

IOW IOCE ;WDTE_bit7 看門狗使能控制: 0為禁止,1為使能

;EIS_bit6 P60引腳功能定義: 0表示為P60為雙向IO口

; 1表示外部中斷輸入引腳,此時引腳必須設置為輸入狀態(tài)

MOV A,@0B00000001 ;中斷屏蔽寄存器: 0禁止中斷,1允許中斷

IOW IOCF

; EXIE_bit2=0 ICIE_bit1=0 TCIE_bit0=1

;開定時器中斷

MOV A,@6

MOV TCC,A

BC RF,0 ;清零定時器中斷溢出標志位

ENI ;開中斷

;DISI

RET

;**********************TCC中斷處理**************************************

INT_TCC: DISI ;先關閉中斷

MOV BACC,A ;保護ACC和STATUS

SWAPA STATUS

MOV BSTATUS,A

JBS RF,0 ;判斷是否為計數(shù)器中斷,如果是得話進入

JMP INTQUIT ;計數(shù)器中斷服務程序,不是則退出

MOV A,@6

MOV TCC,A

BC RF,0 ;清中斷標志位

INC TCC_Count

JBS STATUS,Z_FLAG

JMP INTQUIT

MOV A,@200

MOV TCC_Count,A

;;;;;;;;;;;;;;;;;;;;;;;;;;;;

MOV A,@001000000B

XOR PORT6,A ;蜂鳴器取反

INC LEDL ;LED加1

INTQUIT: SWAPA BSTATUS ;恢復寄存器

MOV STATUS,A

SWAP BACC

SWAPA BACC

RETI

;;******************************************

DELAYMS:

MOV A, @200

MOV LP_CNT0, A

NOP

P0_DLY:

NOP

MOV A, @20

MOV LP_CNT1, A

P0_LP:

NOP

NOP

NOP

DJZ LP_CNT1

JMP P0_LP

DJZ LP_CNT0

JMP P0_DLY

RET

END



關鍵詞: EM78P153定時

評論


技術專區(qū)

關閉