freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

單片機原理及應用電子課件-閱讀頁

2024-10-19 15:46本頁面
  

【正文】 。如果搬移的數(shù)據(jù)為 $,則提前結束搬移。使用寄存器 A, R0, R2, DPTR ADDR1 EQU 30H 。目的數(shù)據(jù)區(qū)首址 LEN EQU 32 。設置堆棧 MOV R0,ADDR1 。目的數(shù)據(jù)區(qū)首址 → DPTR MOV R2,LEN 。取數(shù)據(jù) CJNE A,‘$’,NEXT 。跳轉到結束 NEXT: MOVX DPTR,A 。指向下一個數(shù)據(jù) INC DPTR 。沒有傳夠 32個字節(jié)則繼續(xù) FINISH: SJMP $ 。軟件延時的特點 :不增加硬件開銷,但占用了大量 CPU時間,延時精度易受中斷的干擾,故常用在對延時精度要求不高的場合,如鍵盤的消抖動延時。 1 LOOP: NOP 。 1 DJNZ R7,LOOP 。 2 總執(zhí)行時間= 1+( 1+1+2) 255+2= 1023個機器周期 若 fosc=12MHz,則延時 1023μs= 對于需要較長延時,可用多重循環(huán)來解決。 1 LOOP1: MOV R6,0 。 1 NOP 。 2 DJNZ R7,LOOP1 。 2 延時時間= 1+( 1+( 1+1+2) 256+2) 256+2= 262915 若 fosc=12MHz,則延時= 262915μs= 子程序的設計 子程序 是一種能完成某一專門任務的程序段。子程序常??梢詷嫵勺映绦驇?,集中存放在某一存儲空間,其資源要為所有調用程序共享,任憑主程序調用。 采用子程序能使整個程序結構簡單,縮短程序設計時間,減少存儲空間的占用。沒有主程序,也不會有子程序。 編寫子程序要注意以下幾個問題: 子程序的第一條指令地址稱為子程序的 入口地址 。 主程序調用子程序是通過安排在主程序中的調用指令 CALL實現(xiàn)的,子程序返回主程序必須執(zhí)行安排在子程序末尾的一條 RET指令。 為使所編子程序可以放在 64KB內存的任何區(qū)域并能為主程序調用,子程序內部 必須使用 相對轉移指令,以便匯編時生成浮動代碼。 入口參數(shù) 是指子程序需要的原始參數(shù),由調用它的主程序通過約定的工作寄存器R0~ R SFR、內存單元或堆棧預先傳送給子程序使用; 出口參數(shù) 是由子程序根據(jù)入口參數(shù)執(zhí)行子程序后獲得的結果參數(shù),同樣由上述約定的存儲空間傳遞給主程序使用。設 a和 b均為小于 10的正整數(shù)。主程序通過累加器 A傳送子程序處理所需的入口參數(shù) a或 b,子程序也通過累加器 A傳送結果給主程序。 開 始設 置 堆 棧清 結 果 單 元 R A M C( R A M A ) → A調 求 平 方 子 程 序存 結 果( R A M B ) → A結 束調 求 平 方 子 程 序求 a2+ b2存 結 果主 程 序 流 程 圖開 始平 方 表 首 址 → D P T R查 表返 回求 平 方 子 程 序 流 程 圖。實現(xiàn) RAMA單元數(shù)據(jù)平方與 RAMB單元數(shù)據(jù)平方之和,結果存放在 RAMC單元 。使用寄存器 A, R1, DPTR。參數(shù) a的存放地址 RAMB EQU 31H 。結果 c的存放地址 ORG 0 LJMP START ORG 30H START: MOV SP,60H 。清結果單元 MOV A,RAMA 。求平方 MOV R1,A 。取參數(shù) b LCALL SQR 。求 a2+b2 MOV RAMC,A 。停機結束 SQR: MOV DPTR,TAB 。查表 RET 。平方表 END 例:有 8個數(shù)據(jù)連續(xù)存放在 20H為首地址的內部 RAM單元中,要求使用冒泡法進行升序排序,請編程實現(xiàn)。 8個數(shù)一次需要進行 7次比較,重復此過程,直到?jīng)]有交換發(fā)生,則完成升序(從小到大)排序工作。利用 PSW中的 F0位來存儲冒泡過程中是否有數(shù)據(jù)交換發(fā)生(若 F0= 1則有交換發(fā)生)。這是一個排序程序,可以將 20H單元開始的 8個 16進制按照從小到大的 。使用的寄存器有 A, R0, R2, R3, R7以及位標志 F0 ADDR1 EQU 20H 。冒泡次數(shù) ORG 0 LJMP START 。設置堆棧 LCALL SORT 。停機結束 SORT: MOV R0,ADDR1 。冒泡次數(shù) → R7 CLR F0 。取前數(shù) MOV R2,A 。指向后數(shù) MOV A,R0 。存后數(shù) CLR C 。后數(shù)減前數(shù) JNC NEXT 。取前數(shù) MOV R0,A 。指向前數(shù) MOV A,R3 。存到前數(shù)的單元 INC R0 。置交換標志 NEXT: DJNZ R7,LOOP 。有交換發(fā)生則繼續(xù)排序 RET 。 32試編程把片外 RAM從 2040H開始的連續(xù) 50個單元的內容按降序排列,結果存入 3000H開始的片外存儲區(qū)中。掌握定時器與計數(shù)器的區(qū)別,掌握計數(shù)頻率與晶振頻率的關系。 掌握 MCS- 51單片機串行口的結構、工作模式與控制方法。 它們的工作方式 、 定時時間 、 啟動方式等均可以通過程序來設置和改變 。 單片機內部定時器的邏輯結構見下圖 。 其中TMOD與 T2MOD為模式控制寄存器 , 主要用來設置定時器/計數(shù)器的操作模式; TCON與 T2CON為控制寄存器 , 主要用來控制定時器的啟動與停止 。 它們是加 1的計數(shù)器 。 T0、 T1由 TMOD的 D6位和 D2位選擇 , 其中 D6位選擇 T1的工作方式 , D2位選擇 T0的工作方式 。 而每個機器周期等于 12個振蕩周期 ,故計數(shù)器的計數(shù)頻率為振蕩器頻率的 1/ 12。 ( 2) 選擇計數(shù)工作方式時: TMOD的 D6或 D2=1; T0、 T1工作在計數(shù)方式時 , 計數(shù)脈沖來自相應的外部輸入引腳 T0、 T1,故計數(shù)方式是用于對外部事件進行計數(shù) 。 計數(shù)器在每個機器周期的 S5P2期間 , 對外部脈沖輸入進行一次采樣 。 對外部脈沖的占空比并沒有什么限制 , 但為了確保某一給定的電平在變化之前至少被采樣一次 , 因此 外部計數(shù)脈沖的高電平和低電平保持時間均要求在一個機器周期以上 。 TMOD用于控制 T1和 T0的操作模式及工作方式 ,其各位的定義如下 : ─ TCON TCON的作用是用于控制定時器的啟 、 停及定時器的溢出標志和外部中斷觸發(fā)方式等 。 TR1和 TR0:為定時器 1和定時器 0的啟動控制位 。 IT1和 IT0:為外部中斷 1和外部中斷 0的觸發(fā)方式選擇位 。 定時 /計數(shù)器的初始化編程 1. 初始化的步驟: (1) 確定工作方式 、 操作模式 、 啟動控制方式 寫入 TMOD、 TCON和T2MOD、 T2CON寄存器 。 16位計數(shù)初值必須分兩次寫入對應的計數(shù)器 。 開放中斷時 , 對應位置 1;采用程序查詢方式時 IE相應位清 0進行中斷屏蔽 。 T0或 T1若設置為軟啟動 ,即 GATE設置為 0時 , 以上指令執(zhí)行后 , 定時器即可開始工作 。 2 計數(shù)初值的計算 若設最大計數(shù)值為 2n, n為計數(shù)器位數(shù) , 各操作模式下的 2n值為: 模式 0: 2n=8192 ; n=13 模式 1: 2n=65536 ; n=16 模式 2: 2n=256 ; n=8 模式 3: 2n=256 ; n=8, 定時器 T0分成 2個獨立的 8位計數(shù)器 , 所 以 TH0、 TL0的最大計數(shù)值均為 256。 3. 定時器初始化舉例 設置 T1為定時工作方式,定時 50ms,選操作模式 1,軟啟動; T0為計數(shù)方式,對外部脈沖進行計數(shù) 10次,硬啟動,選操作模式 2。 T0/T1的模式控制字為: 00011110( 1EH) T0的初值 X0= 256- 10= 246= 0F6H T1的初值 X1= 65536( 6*50*1000) /12= 40536= 9E58H 則初始化程序為: MOV TMOD,1EH 。寫入 T0的初值 MOV TL0,0F6H MOV TH1,9EH 。禁止 T0中斷 CLR ET1 。啟動 T0計數(shù) SETB TR1 。 1. 模式 0( 方式 0) 模式 0是一個 13位的定時/計數(shù)器 , 16位的寄存器只用了高 8位 (THi)和低 5位 (TLi的 D4~D0位 ), TLi的高 3位未用 。 其: 定時初值 X=213t fosc/12 計數(shù)初值 X=213計數(shù)值 注意:在模式 0下計算得到的初值一定要轉換為 13位 2進制數(shù) , 然后從高位開始截取 8位做為 THi的值 , 余下的 5位在其前面補充 000后做為 TLi的值 。 定時初值 X為: X=216t fosc/ 12 計數(shù)初值 X為: X=216計數(shù)值 例:用定時器 1產生一個 50Hz的方波,由 ,用程序查詢方式工作, fosc=12MHz。 T1的定時初值為: X1= 6553610 1000 12/12= 55536= D8F0H,則程序段如下: MOV TMOD,10H 。送 T1的初值 MOV TL1,0F0H SETB TR1 。如果 T1溢出,則清溢出標志并轉移到 LL2 SJMP LL1 。將 ,以輸出方波 SJMP LOOP 。 模式 2中把 16位的計數(shù)器拆成兩個 8位計數(shù)器 , 低 8位作計數(shù)器用 , 高 8位用以保存計數(shù)初值 。 模式 2可自動循環(huán)計數(shù) , 省去了軟件重新裝入初值的麻煩 , 提高了定時的精度 。 計數(shù)初值 X=28計數(shù)值 定時初值 X=28t fosc/ 12 注意:在該模式下 , 初始化編程時 THi和 TLi都裝入此 X值 , 并且只需裝入一次即可 。 解:方波周期 T= 1/2022= =500μ s,我們只需要每隔半周期 250μ s將 2022Hz的方波。 T0的定時初值為: X0= 256250 12/12= 6= 6H, 程序段如下: MOV TMOD,02H 。送 T0的初值 MOV TL0,06H SETB TR0 。如果 T0沒有溢出,則等待 CLR TF0 。將 ,以輸出方波 SJMP LOOP 4. 模式 3(方式 3) 模式 3只適用定時器 T0, T0在該模式下被拆成兩個獨立的 8位計數(shù)器 TH0和 TL0,其中 TL0使用原來 T0的一些控制位和引腳,它們是 C/T、GATE、 TR0、 TF0和 T0()引腳及 INT0()引腳。 該模式下的 TH0,此時只可用作簡單的內部定時器功能,它借用原定時器 T1的控制位和溢出標志位 TR1和 TF1,同時占用了 T1的中斷源。模式 3為定時器 T0增加了一個 8位的定時器。通過設置 C/T位可對內部時鐘進行定時或對外部引腳脈沖進行計數(shù)的功能。因此,當 T0工作于模式 3時, T1一般用作串行口波特率發(fā)生器使用。通常把定時器 T1設置為模式 2作波特率發(fā)生器比較方便。 定時/計數(shù)器均為加法計數(shù)器。 T0有 4種工作方式, T1有 3種。 定時/計數(shù)器的初始化方法。
點擊復制文檔內容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1