當前位置:編程學習大全網 - 編程軟體 - 已知fosc=6MHz,試編寫程序,利用T0工作在方式3,使P1.0和P1.1分別輸出400μs和1ms方波。

已知fosc=6MHz,試編寫程序,利用T0工作在方式3,使P1.0和P1.1分別輸出400μs和1ms方波。

答案:①T0定時器方式3時,被拆成二個獨立的8位計數器TH0、TL0,定時初值應分別計算,其中定時1ms將超出8位計數器最大計數值,可按0.5ms×2編程。

TL0初值=28-400μs/2μs=256-200=56=38H

TH0初值=28-500μs/2μs=256-250=6

②TMOD=00000011B

③編制程序如下:

ORG 0000H ;復位地址

UMP STAT ;轉初始化程序

ORG 000BH ;T0中斷入口地址

LJMP IT0 ;轉T0中斷服務程序

ORG 001BH ;T1中斷入口地址(被TH0借用)

LJMP IT1 ;轉T1中斷服務程序

ORG 1000H ;初始化程序首地址

STAT:CLR P1.0 ;P1.0輸出低電平

CLR P1.1 ;P1.1輸出低電平

MOV TMOD,#03H ;置T0定時器方式3

MOV TL0,#38H ;置TL0初值,定時400μs

MOV TH0,#06H ;置TH0初值,定時500μs

MOV IP,#00001010B ;置T0、T1為高優先級

SETB TR0 ;T0啟動

SETB P1.0 ;輸出高電平

SETB TR1 ;T1啟動(被TH0借用)

SETB P1.1 ;輸出高電平

SETB F0 ;置1ms標誌

MOV IE,#10001010B ;T0、T1開中

LJMP MAIN ;轉主程序,並等待中斷

ORG 2000H ;T0中斷服務子程序首地址

IT0:MOV TL0,#38H ;重置TL0初值400μs

CPL P1.0 ;輸出波形取反

RET1 ;中斷返回

ORG 2100H ;T1中斷服務子程序首地址

IT1:MOV TH0,#06H ;重置TH0初值500μs

CPL F0 ;1ms標誌取反

JNB F0,IT01 ;無1ms標誌,轉返回

CPL P1.1 ;有1ms標誌,輸出波形取反

IT01:RETI ;中斷返回

  • 上一篇:EXCEL裏面的“宏”怎麽用?
  • 下一篇:編程模板定制
  • copyright 2024編程學習大全網