4-9 CTM Timer/Counter Moded 控制實驗

Slides:



Advertisements
Similar presentations
第六章 遥感影像计算机解译  §1 信息提取的原理和方法 信息提取的原理和方法  §2 航空像片的信息提取 航空像片的信息提取  §3 卫星像片的信息提取 卫星像片的信息提取  §4 遥感影像地图 遥感影像地图 下一章 本章提要( … ) 主要介绍了遥 感数据的信息提取 的原理和方法,
Advertisements

上海交通大学附属中学 李由 晏敏宽 刘华典 指导老师:朱乔荣 徐忠惠 制作:李由
桌球腳步練習(熱身操) 1.單步(近檯,踏出一步) 跟步(近到中檯,踏出二步) 11
青春期男生女生交往.
第七章 8254可程式規劃計時/計數器 8254 Programmable Timers.
金属学与热处理 主讲: 杨慧.
基本程式範例.
國立大甲高工 電機科 單晶片微電腦控制實習 輸出埠基礎實習 廣告燈 2018年11月7日 8051 單晶片實習----E0903廣告燈.
國立大甲高工 電機科 單晶片微電腦控制實習 輸出埠基礎實習 霹靂燈 2018年11月7日 8051 單晶片實習---E0902霹靂燈.
4-10 STM Timer/Counter 與比較吻合輸出
正反器 一、循序邏輯電路 二、動作情形:用時序(timing),其次輸出( )是由外界輸入與( )所共同決定。
100學年度第2學期 邏輯設計實習TA訓練 機 台 介 紹.
第七章 MSP430時脈計時器A模組.
國立大甲高工 電機科 單晶片微電腦控制實習 輸出埠基礎實習 閃爍燈 2018年11月23日 8051 單晶片實習---E0901閃爍燈.
使用VHDL設計—4位元加法器 通訊一甲 B 楊穎穆.
使用VHDL設計—4位元位移器 通訊一甲 B 楊穎穆.
2-1 接腳說明 2018/11/30 第2章 系統分析.
數位邏輯設計與實習 Ch06 計數器與暫存器設計.
微處理機-期末專題報告 骰骰子 四電通一A 4990D027 劉志彥 四電通一A 4990D033 王俊龍.
介面設計專題實務 Object Teaching of Interface Design 實驗五 CPU計時器實驗
fp=fopen("CD2.dat","wb"); fwrite(&min,8,1,fp); fclose(fp);
4-13 ETM輸出PWM HT66F70A.
用開關選擇動作狀態 單晶片微電腦控制實習 輸入埠基礎實習 國立大甲高工 電機科 2019年1月16日
使用VHDL設計-多工器/解多工器 通訊一甲 B 楊穎穆.
遙控車程式 學號:B 姓名:楊 穎 穆 老師:田 慶 誠.
類比轉數位 IC研究 組員:施怡儒 S 柯曄新 S 張久藝 S
第1章 概述 本章要点: C语言程序结构和特点 C语言程序的基本符号与关键字 C语言程序的编辑及运行 学习方法建议:
4-15 WDT HT66F50.
第七單元 正反器 (教科書第四章) 數位系統實驗
第8章 順序邏輯應用實驗 8-1 計數器 8-2 跑馬燈 8-3 紅綠燈.
語法:結構 實作:Analog in (VR、光敏+七段顯示電壓) 簡報:廖崇義
程式設計期末測驗 通訊一甲 B 楊穎穆.
基本IO.
4-10 STM Timer/Counter 與比較吻合輸出
4-9 Timer/Counter 控制七段速度
教科版六年级下册第一单元第4课 怎样放得更大 莲都区天宁小学 陈建秋.
第2章 认识C语言 教学要点 2. 1 项目二C语言程序识读 2 .2 项目三班级成绩排名 2 .3 知识链接 返回.
4.19 Fsys _ SLOW MODE HT66F70A.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
數位邏輯設計與實習 Ch08實驗室實習.
班級:通訊一甲 學號:B 學生:李忠憲 指導老師:王志湖 老師
4-12 外部中斷 HT66F70A.
4-16 SLEEP0 HT66F70A.
第二章 类型、对象、运算符和表达式.
单片机原理及应用 实践部分 主讲人:刘 强 四川工商学院单片机教学团队 单片机原理及应用 实践部分 主讲人:刘 强
第二章 基本数据类型 ——数据的表示.
自停式向下計數器 通訊一甲 B 楊穎穆.
單元 樞密特觸發電路 單元總結.
#include <iostream.h>
利用HT66F50 SIM模組單元中PCK腳位輸出特性 控制speaker 發聲 SIM 串列界面模組
使用VHDL設計-8x3編碼電路 通訊一甲 B 楊穎穆.
4-14 類比中斷 HT66F70A.
遙控車程式流程圖規劃 學號:B 姓名:楊 穎 穆 老師:田 慶 誠.
可變式計數器 通訊一甲 B 楊穎穆.
班級:博碩子一甲 授課老師:鐘國家 助教:陳國政
第十二章 位运算.
4.11 ADC.
得技通电子 问题 1 右何者非為假指令 (1) XRL (2) EQU (3) MACRO (4) ORG.
《数据结构与算法设计》第一部分 面向对象的C++程序设计基础.
期末報告第一題 通訊四甲 B 湯智瑋.
查表法&電腦IO Port二進制轉七段顯示器
微算機(二) -- ADC0804 measurement
通訊實驗 實驗三 遙控車程式流程圖 姓名:顏得洋 學號:B
專題報告 - 線性滑軌應用 指導老師:任才俊 組員:王琮賢,洪聖凱.
LED Pili LED 中州技術學院 電子系 副教授 余文俊.
使用VHDL設計-七段顯示 通訊一甲 B 楊穎穆.
4-13 ETM輸出PWM HT66F50.
微 處 理 機 專 題 – 8051 C語言程式設計 主題:階乘計算
單晶片實作講義 微電腦控制界面 (LCD) 。.
2-4 中斷.
Presentation transcript:

4-9 CTM Timer/Counter Moded 控制實驗 HT66F70A

TM 計時模組 三大類 CTM精簡型 / STM 標準型 / ETM 增強型 五個功能 計時器/計數器 輸入補捉 比對吻合輸出 單脈衝輸出 PWM

CTM是所有家族成員具備的計時模組,具備三種操作模式仍可以應付一般需求。 三種操作模式為: 1.比較吻合輸出 2.計時/計數 3.脈波調變輸出模式 同時可搭配一支外部輸入腳位,以及一、兩支的輸出腳位進行運作。

CTM 內部結構

CTM 內部結構 (fig 2-5-3) 10位元上數計數器TMnD 兩個內部暫存器TMnA(10bit) TnRP (3bit) TMnC0、TMnC1 特殊功暫存器 兩個內部暫存器CCRP(3bit)與CCRA(10bit)所組成。 由TnCK[2:0]位元的設定控制選擇七種不同的時脈信號作為10-BIT上數計數器計數時脈源 操作模式 輸出特性

當啟動計數時(設定TnON=「1」),上數計數器會先清除為零,接著根據所選擇的時脈開始往上遞增。 計數過程中,比較器A與P會將其數值分別與 TMnA(3bit)、TnRP(10bit)的設定值進行比較,不同的工作模式在比對吻合時會產生不同的動作。 HT66F70A有兩組CTM計時模-TM0、TM3。

CTM 輸出入腳位 TH66F70A 計時模組: TM0, TM3 TM輸入腳位: TCK0, TCK3 TM輸出腳位: TP0,TP0B

TMnC0 控制暫存器(表2-5-7) Bit [7] : TnPAU TMn計時/計數暫停控制位元 TnPAU TnCK2 TnCK1 TnCK0 TnON TnRP2 TnRP1 TnRP0 Bit 7 6 5 4 3 2 1 0 Bit [7] : TnPAU TMn計時/計數暫停控制位元 = 1 :暫停計數 = 0 :繼續計數(當此位元為0時,TMnD由原暫停時的數值繼續往上數) Bit [6 5 4] : TnCK[2:0] TMn計數時脈選擇位元 = 000 : fINT = fsys/4 = 100 : fINT = fINT = 001 : fINT = fsys = 101 : 保留 = 010 : fINT = fsys/16 = 110 : fINT = TCK時脈正緣 = 011 : fINT = fsys/64 = 111 : fINT = TCK時脈負緣 Bit [3] : TnON TMn計時/計數控制位元 = 1 : 開始計數(當此位元為1時,TMnD先歸零後再開始往上計數) = 0 : 停止計數

TMnC0 控制暫存器 TnPAU TnCK2 TnCK1 TnCK0 TnON TnRP2 TnRP1 TnRP0 Bit 7 6 5 4 3 2 1 0 Bit [2 1 0] : TnRP[2:0] : CCRP三位元暫存器 = 000 : 週期 = 1024x fINT-1 = 100 : 週期 = 512x fINT-1 = 001 : 週期 = 128x fINT-1 = 101 : 週期 = 640x fINT-1 = 010 : 週期 = 256x fINT-1 = 110 : 週期 = 768x fINT-1 = 011 : 週期 = 384x fINT-1 = 111 : 週期 = 896x fINT-1

TMnC1 控制暫存器(表2-5-8) Bit [7 6] : TnM[1:0] 模式控制位元 TnM1 TnM0 TnIO1 TnIO0 TnOC TnPOL TnDPX TnCCLR Bit 7 6 5 4 3 2 1 0 Bit [7 6] : TnM[1:0] 模式控制位元 = 00 : 比對吻合輸出模式 = 01 : 未定義 = 10 : PWM = 11 : 計時/計數

TMnC1 控制暫存器 操作於 compare match, 比對吻合輸出模式時 TnM[1:0]=00) TnM1 TnM0 TnIO1 TnIO0 TnOC TnPOL TnDPX TnCCLR Bit 7 6 5 4 3 2 1 0 Bit [5 4] : TnIO [ 1 : 0 ] Tpn_0、Tpn_1 輸出功能 操作於 compare match, 比對吻合輸出模式時 TnM[1:0]=00) = 00 : 當比對吻合 輸出不變 = 10 : 當比對吻合 輸出 1 = 01 : 當比對吻合 輸出 0 = 11 : 當比對吻合 輸出 轉態 操作於 「PWM」 模式時 (TnM[1:0]=10) 00 : 強制為非啟動, 01強制為啟動, 10 PWM輸出, 11未定義 操作於 Timer/Counter 模式時 TnM[1:0]=11, 無作用)

TMnC1 控制暫存器 Bit [3] : TnOC Tpn、TpnB (輸出控制位元) TnM1 TnM0 TnIO1 TnIO0 TnOC TnPOL TnDPX TnCCLR Bit 7 6 5 4 3 2 1 0 Bit [3] : TnOC Tpn、TpnB (輸出控制位元) 操作於比對吻合輸出模式(compare match output)模式時(TnM[1:0]=00) = 1 : 在首次比對吻前 輸出維持1 = 0 : 在首次比對吻前 輸出維持0 操作於「PWM」模式時 (TnM[1:0]=10) = 1 : 啟動準位1 = 0 : 啟動準位0 Bit [2] : TnPOL Tpn、TpnB(輸出極性控制位元) = 1 : 反向後再輸出 = 0 : 直接輸出

TMnC1 控制暫存器 Bit [1] : TnDPX PWM模式之Duty與period切換控制位元 TnM1 TnM0 TnIO1 TnIO0 TnOC TnPOL TnDPX TnCCLR Bit 7 6 5 4 3 2 1 0 Bit [1] : TnDPX PWM模式之Duty與period切換控制位元 = 1 : TnRP控制Duty,TMnA控制Period = 0 : TnRP控制Period,TMnA控制Duty Bit [0] : TnCCLR TMn清除控制位元(TMn counter Clear Control Bit) = 1 : 當比較器A比對吻合時即清除計數器 = 0 : 當比較器P比對吻合或計數器溢位(若TnRP=0)時清除計數器

計數時脈源由系統本身TnCK[2:0] 稱為Timer 計數時脈源由外部輸入TnCK[2:0] 稱為Counter 啟動TMnD 計數 (1) 若TnCCLR=1, 當TMnD=TMnA, CTM 會設定TNAF=1, 並將TMnD歸零後繼續計數 (2) 若TnCCLR=0, 當TMnD=TMnA, CTM 會設定TNAF=1,並繼續計數,當TMnD[9:7]計數值與TnPF=1,將TMnD歸零後繼續計數

MFIO暫存器 NAME BIT 7 6 5 4 3 2 1 MFIO T2AF T2PF TnAF TnPF T2AE T2PE T0AE MFIO T2AF T2PF TnAF TnPF T2AE T2PE T0AE T0PE

4-9.CTM Timer/Counter Moded控制實驗 #include <HT66F70A.h> #define SEG_Port _pc #define SEG_PortC _pcc typedef unsigned char u8; typedef unsigned short u16; const u8 SEG_TAB[] = //七段顯示器顯示碼(共陰) { 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x67 }; void PAUSE(void); //函式原型宣告

主程式 void main() { u8 i; _wdtc=0b10101111; //關閉看門狗計時器 SEG_PortC=0x00; //規劃SEG_Port為輸出模式 _tm0c0=0b00100000; //T0CK[2:0]=010,fINT=fH=fSYS(8MHz)/16 _tm0c1=0b11000001; //TM0為Counter/Timer模式,TMA吻合清除 _tm0al=1000%256; _tm0ah=1000/256; //TM0A=1000,1000/fINT=2mS while(1) { for(i=0;i<10;i++) { SEG_Port=SEG_TAB[i]; //查表並顯示於七段 PAUSE(); //延遲1秒 }

副程式 void PAUSE(void) { u16 i; _t0on=1; //啟動TM0計數 for(i=0;i<500;i++) //500*2mS=1 Sec { while(!_t0af); //等待T0AF=1 _t0af=0; //清除T0AF } _t0on=0; //停止TM0計數