09-PPT006-第六章-查找
- 格式:pdf
- 大小:274.11 KB
- 文档页数:47
第六章TCC計時器6-1、簡介ET44M210微控制器內提供了一個有預除器(Prescaler)的計時器(TCC),一個自由振盪計時器(FRC)。
TCC及FRC的時脈來源是IC內部的Clock或是外部RC振盪。
6-2、TCC如圖6-1所示為ET44M210的TCC功能方塊圖。
這是一個8位元附有預除器(Prescaler)的計時器。
TCC的時脈來源可以是來自IC內部的Clock也可以是來自外部RC振盪。
當TCC的時脈是來自IC內部的Clock時,TCC會在每個指令週期自動加1。
當TCC 的時脈是來自外部RC振盪時,TCC會在外部TCC接腳正緣觸發(Rising Edge) 或負緣觸發(Falling Edge) 時自動加1。
TCCS0是選擇TCC時脈使用IC內部的Clock或是來自外部RC振盪。
TCCE是選擇是否啟動TCC的功能。
TCCOF是表示TCC是否發生溢位中斷。
PS0~PS2是選擇以預除器的倍率,因為TCC有使用預除器,因此TCC加1的時間是由PS0~PS2所決定。
當TCC計時器內的值由FFh變成00h時,產生溢位中斷,中斷旗標暫存器中的TCC 溢位中斷旗標(TCCOF)會被設為1,程式會跳至中斷相量位址0x0028h去執行相關的中斷副程式以下是TCC Timer 計算的公式:TCC Timer=(0x100-TCC) * Prescaler* (1/Clock Source) 當TCC的時脈是來自外部RC振盪時,在ET44M210的ICE上,RC振盪的公式是Freq (KHz) * R (Meg Ohm) = 150 (常數)而由於ET44M210的ICE上,RC震盪電阻的預設值是300KΩ,因此外部RC的振盪頻率是500KHz。
I.TCC相關的暫存器預除器(Prescaler Counter )– PRC (0x0F)一個八位元的計數器。
Time Clock Counter – TCC (0x10)此暫存器存放TCC的值。
CH6 查找⏹查找的基本概念⏹6.1 静态查找表◆ 6.1.1 顺序查找◆ 6.1.2 有序表的查找⏹6.2 动态查找表◆ 6.2.1 二叉排序树⏹6.3 哈希表吴国祥571056735@⏹1.查找表⏹2.查找◆关键字●主关键字●次关键字◆查找:根据某个给定的值,在表中确定一个其关键字等于给定值的记录或数据元素。
●查找成功●查找失败⏹3.查找表的分类◆静态查找表◆动态查找表⏹4.衡量查找算法效率的标准◆平均查找长度ASL (A verage S earch L ength)◆查找成功时的平均查找长度111ni ii ni i ASL p c p ====∑∑⏹5.本章数据元素类型与比较运算的符号约定◆数据类型定义typedef struct {KeyType key;……}ElemType◆6.查找的基本方法比较式查找法计算式查找法基于线性表的查找法(静态查找)基于树的查找法(动态查找)——HASH 查找法顺序查找法折半查找法二叉排序树6.1 静态查找表⏹静态查找表主要有:◆顺序表◆有序顺序表⏹针对静态查找表的查找算法主要有:◆顺序查找(线性查找)◆折半查找(二分查找)⏹1.顺序表上的顺序查找的基本思想◆从顺序表的一端开始,用给定数据元素的关键字逐个与顺序表中各数据元素的关键字比较,●若在顺序表中查找到要查找的数据元素,则查找成功,函数返回该数据元素在顺序表中的位置;●否则查找失败,函数返回0。
⏹2.顺序表的机内存储结构typedef struct{ElemType *elem;int length;}SSTable;x a 1a 2a 3……a n-2a n-1a n int Search_Seq(SSTable ST,KeyType key){ ST.elem[0].key=key;for (i=ST.length;ST.elem[i].key!=key);--i);return i;}顺序查找过程⏹3.顺序查找操作的性能分析(设n =ST.length )◆(1)查找成功时的平均查找长度●x i 查找成功的比较次数为n -i +1(1≤i ≤n )●等概率情况下查找成功的平均查找长度:1111(1)2n nsucc i i i i n ASL p c n i n ==+=⨯=-+=∑∑6.1.2 有序表的查找⏹有序顺序表上的查找算法◆(1)顺序查找法●有序顺序表上顺序查找算法类同顺序表上的顺序查找算法◆(2)二分查找法(又称折半查找法)●前提条件:•1)表中的记录按关键字有序(设递增有序)•2)查找表采用顺序存储结构●查找过程折半查找过程示例1) 查找关键字等于21的记录1234567891011513192137566475808892ST.elem[mid].key>21 513192137566475808892 ST.elem[mid].key<21513192137566475808892 ST.elem[mid].key=21(查找成功)2) 查找关键字等于85的记录1234567891011 513192137566475808892ST.elem[mid].key<85 513192137566475808892ST.elem[mid].key<85 513192137566475808892ST.elem[mid].key>85 513192137566475808892失败算法描述int Search_Bin(SSTable ST,KeyType key){low=1;high=ST.length;while (low<=high){mid=(low+high)/2;if (key= = ST.elem[mid].key) return mid;else if (key<ST.elem[mid].key) high=mid-1;else low=mid+1;}return 0;}⏹折半查找过程可以描述为一棵二叉树◆折半查找的判定树如:(a 1, a 2, a 3,a 4, a 5, a 6, a 7, a 8, a 9,a 10, a 11)a 9a 6a 3a 1a 4a 7a10a 2a 5a 8a 11~a 1a 3-a 4a 6-a 7a 9-a 10a 1-a 2a 2-a 3a 4-a 5a 5-a 6a 7-a 8a 8-a 9a 10-a 11a 11-⏹折半查找算法的性能分析◆可以看出:●n 个结点的判定树的深度和n 个结点的完全二叉树的深度相同,即2log 1n +⎢⎥⎣⎦◆查找成功:●查找成功的过程:•走了一条从根结点到与该记录对应结点的路径。