日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

单片机脉宽测量C语言,单片机脉宽测量的程序

發(fā)布時間:2023/12/19 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 单片机脉宽测量C语言,单片机脉宽测量的程序 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

DATL EQU 30H ;計數(shù)低位

DATH EQU 31H ;計數(shù)高位

DATC EQU 32H ;計數(shù)進位

LEDBuf EQU 33H ;顯示緩存

ORG 0000H

JMP MAIN

ORG 0003H

AJMP INT_0

ORG 0050H

MAIN:AJMP START

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

;顯示子程序

LEDMAP: ; 八段管顯示碼

DB 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h

DB 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h

LED:

MOV R0 ,#LEDBuf

MOV R1 ,#6 ; 共6個八段管

MOV R2 ,#00100000b ; 從左邊開始顯示

Loop:

MOV DPTR ,#8002H

MOV A ,#0

MOVX @DPTR,A ; 關(guān)所有八段管

MOV A ,@R0

MOV DPTR ,#8004H

MOVX @DPTR,A

MOV DPTR ,#8002H

MOV A ,R2

MOVX @DPTR,A ; 顯示一位八段管

MOV R6 ,#1

MOV R7 ,#0

L:

DJNZ R7 ,L

DJNZ R6 ,L

MOV A ,R2 ; 顯示下一位

RR A

MOV R2, A

INC R0

DJNZ R1 ,Loop

RET

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

;中斷服務(wù)子程序 (啟動定時功能)

INT_0:

CLR EX0 ;關(guān)中斷

MOV DATC ,#00H

MOV TH1 ,#00H

MOV TL1 ,#00H

JB P3。

3

SETB TR1 ;啟動定時器1,但不計數(shù)

JNB P3。3 ,$ ;等待脈沖由低電平變?yōu)楦唠娖?;等待正脈沖

CH0: JNB TF1 ,CH1 ;計數(shù)沒溢出,跳轉(zhuǎn)

INC DATC

CLR TF1

MOV TH1 ,#00H ;裝入初值

MOV TL1 ,#00H

SETB TR1 ;啟動定時器

CH1: JB P3。

3 ,CH0 ;判斷正脈沖是否結(jié)束

CLR TR1 ;停止計數(shù)

MOV A ,TL1

MOV DATL ,A

MOV A ,TH1

MOV DATH ,A

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

; 計數(shù)值*機器周期(6MHz 為2us)

CLR C ;帶進位左移等同乘2

MOV A ,DATL

RLC A

MOV DATL ,A

MOV A ,DATH

RLC A

MOV DATH ,A

MOV A ,DATC

RLC A

MOV DATC ,A

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

;數(shù)制轉(zhuǎn)換

CLR A

MOV R3 ,A

MOV R4 ,A

MOV R5 ,A

MOV R7 ,#24

HB0:

MOV A ,DATL ;**********************

RLC A ;依次移出高位

MOV DATL ,A ;

MOV A ,DATH

RLC A

MOV DATH ,A

MOV A ,DATC

RLC A

MOV DATC ,A

MOV A ,R3 ;將累加器自身帶進位相加(與*2等效)

ADDC A ,R3 ;累加器依次從低位開始

DA A

MOV R3 ,A

MOV A ,R4

ADDC A ,R4

DA A

MOV R4 ,A

MOV A ,R5

ADDC A ,R5

DA A

MOV R5 ,A

DJNZ R7 ,HB0 ;判斷24位是否處理完

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

;壓縮BCD碼轉(zhuǎn)換成非壓縮BCD碼

MOV DPTR ,#LEDMAP

MOV A ,R5

SWAP A

ANL A ,#0FH ;屏蔽高位

MOVC A ,@A+DPTR

MOV LEDBuF,A ;分離出第6位

MOV A ,R5

ANL A ,#0FH

MOVC A ,@A+DPTR

MOV LEDBuf+1,A ;分離出第5位

MOV A ,R4

SWAP A

ANL A ,#0FH ;屏蔽高位

MOVC A ,@A+DPTR

MOV LEDBuF+2,A ;分離出第4位

MOV A ,R4

ANL A ,#0FH

MOVC A ,@A+DPTR

MOV LEDBuf+3,A ;分離出第3位

MOV A ,R3

SWAP A

ANL A ,#0FH ;屏蔽高位

MOVC A ,@A+DPTR

MOV LEDBuF+4,A ;分離出第2位

MOV A ,R3

ANL A ,#0FH

MOVC A ,@A+DPTR

MOV LEDBuf+5,A ;分離出第1位

SETB EX0 ;開中斷

RETI

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

;主程序開始

START:

MOV SP ,#50H

MOV TMOD ,#90H ;設(shè)置定時器1的工作方式為1,GEAE置1

MOV TH1 ,#00H

MOV TL1 ,#00H ;定時器時間初值置零

MOV IE ,#81H ;開外部中斷0

CALL LED ; 調(diào)顯示

LJMP MAIN

END

。

全部

總結(jié)

以上是生活随笔為你收集整理的单片机脉宽测量C语言,单片机脉宽测量的程序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。