久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
基于AT89c51單片機的超聲波測距匯編語言源程序
[打印本頁]
作者:
殤阡陌
時間:
2017-5-8 11:21
標題:
基于AT89c51單片機的超聲波測距匯編語言源程序
程序清單
以下是用匯編語言編寫的超聲波測距控制源程序:
采用AT89S51 12MHz晶振
顯示緩沖單元在40H~43H,使用內存44H、45H、46H用于計算距離
20H用于標志
完整資料下載:
asdfdf.doc
(59 KB, 下載次數: 57)
2017-5-8 11:20 上傳
點擊文件名下載附件
源程序
下載積分: 黑幣 -5
單片機源程序:
VOUT EQU P1.0 ;脈沖輸出端口
*中斷入口程序*
ORG 0000H
LJMP START
ORG 0003H
LJMP PINT0
ORG 000BH
LJMP INTT0
ORG 0013H
RETI
ORG 001BH
LJMP INTT1
ORG 0023H
RETI
ORG 002BH
RETI
*主程序*
START: MOV SP, #4FH
MOV R0, #40H ;40~43H為顯示數據存放單元(40為最高位)
MOV R7,#0BH
CLEARDISP:MOV @R0, #00H
INC R0
DJNZ R7, CLEARDISP
MOV 20H, #00H
MOV TMOD, #21H ;T1為8位自動重裝模式,T0為16位定時器
MOV TH0, #00H ;65ms初值
MOV TL0, #00H ;40KHz初值
MOV TH1, #0F2H
MOV TL1, #0F2H
MOV P0, #0FFH
MOV P1, #0FFH
MOV P2, #0FFH
MOV P3, #0FFH
MOV R4, #04H ;超聲波脈沖個數控制(為賦值的一半)
SETB PX0
SETB ET0
STEB EA
CLR 00H
SETB TR0 ;開啟測距定時器
START1: LCALL DISPLAY
JNB 00H, START1 ;收到反射信號時標志位為1
CLR EA
LCALL WORK ;計算距離子程序
SETB EA
CLR 00H
SETB TR0 ;重新開啟測距定時器
MOV R2, #64H ; 測量間隔控制(約4*100=400ms)
LOOP: LCALL DISPLAY
DJNZ R2, LOOP
SJMP START 1
*中斷程序*
;T0中斷,65ms中斷一次
INTT0: CLR EA
CLR TR0
MOV TH0, #00H
MOV TL0, #00H
SETB ET1
SETB EA
SETB TR0 ;啟動計時器T0,用以計算超聲波來回時間
SETB TR1 ;開啟發超聲波用定時器T1
OUT: RETI
;T1中斷,發超聲波用
INTT1: CPL VOUT
DJNZ R4,RETIOUT
CLR TR1 ;超聲波發送完畢,關T1
CLR ET1
MOV R4,#04H
SETB EX0 ;開啟接收回波中斷
RETIOUT: RETI
;外中斷0,收到回波時進入
PINT0: CLR TR0 ;關計數器
CLR TR1
CLR ET1
CLR EA
CLR EX0
MOV 44H, TL0 ;將計數值移入處理單元
MOV 45H, TH0
SETB 00H ;接收成功標志
RETI
*延時程序*
DL1MS: MOV R6, #14H
DL1: MOV R7, #19H
DL2: DJNZ R6, DL2
DJNZ R6, DL1
RET
*顯示程序*
;40H為最高位,43H為最低位,先掃描高位
DISPLAY: MOV R1, #40H;G
MOV R5,#0F7H;G
PLAY: MOV A, R5
MOV P0, #0FFH
MOV P2, A
MOV A, @R1
MOV DPTR, #TAB
MOVC A, @A+DPTR
MOV P0, A
LCALL DLIMS
INC R1
MOV A, R5
JNB ACC.0, ENDOUT;G
RR A
MOV R5, A
AJMP PLAY
ENDOUT; MOV P2, #0FFH
MOV P0, #0FFH
RET
TAB; DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,88H,0BFH
;共陽數碼管 0 ,1, 2,3,4,5,6,7,8,9,不亮,A, —
*距離計算程序(=計算值×17/1000cm) 近似
WORK: PUSH ACC
PUSH PSW
PUSH B
MOV PSW, #18H
MOV R3, 45H
MOV R2, 44H
MOV R1, #00D
MOV R0, #17D
LCALL MUL2BY2
MOV R3, #03H
MOV R2, #0E8H
LCALL DIV4BY2
LCALL DIV4BY2
MOV 40H, R4
MOV A, 40H
JNZ JJ0
MOV 40H, #0AH ;最高位為0,不點亮
JJ0: MOV A R0
MOV R4, A
MOV A R1
MOV R5 A
MOV R3, #00D
MOV R2, #100D
LCALL DIV4BY2
MOV 41H, R4
MOV A, 41H
JNZ JJ1
MOV A, 40H ;此高位為0,先看最高位是否為不亮
SUBB A, #0AH
JNZ JJ1
MOV 41H, #0AH ; 最高位不亮,次高位也不亮
JJ1: MOV A, R0
MOV R4, A
MOV A, R1
MOV R5, A
MOV R3, #00D
MOV R2, #10D
LCALL DIV4BY2
MOV 42H, R4
MOV A 42H
JNZ JJ2
MOV A, 41H ;次高位為0,先看次高位是否為不亮
SUBB A, #0AH
JNZ JJ2
MOV 42H, #0AH ;次高位不亮,次高位也不亮
JJ2: MOV 43H, R0
POP B
POP PSW
POP ACC
RET
*兩字節無符號數乘法程序
MUL2BY2: CLR A
MOV R7, A
MOV R6, A
MOV R5, A
MOV R4, A
MOV 46H, #10H
MULLOOP1: CLR C
MOV A, R4
RLC A
MOV R4, A
MOV A, R5
RLC A
MOV R5, A
MOV A, R6
RLC A
MOV R6, A
MOV A, R7
RLC A
MOV R7, A
MOV A, R0
RLC A
MOV R0, A
MOV A, R1
RLC A
MOV R1, A
JNC MULLOOP2
MOV A, R4
ADD A, R2
MOV R4, A
MOV A, R5
ADDC A, R3
MOV R5, A
MOV A, R6
ADDC A, #00H
MOV R6, A
MOV A, R7
ADDC A, #00H
MOV R7, A
MULLOOP2: DJNZ 46H, MULLOOP1
RET
*四字節/兩字節無符號數除法程序*
DIV4BY2: MOV 46H, #20H
MOV R0, #00H
MOV R1, #00H
DIVLOOP1: MOV A, R4
RLC A
MOV R4, A
MOV A, R5
RLC A
MOV R5, A
MOV A, R6
RLC A
MOV R6, A
MOV A, R7
RLC A
MOV R7, A
MOV A, R0
RLC A
MOV R0, A
MOV A, R1
RLC A
MOV R1, A
CLR C
MOV A, R0
SUBB A, R2
MOV B, A
MOV A, R1
SUBB A, R3
JC DIVLOOP2
MOV R0, B
MOV R1, A
DIVLOOP2: CPL C
DJNZ 46H, DIVLOOP1
MOV A, R4
RLC A
MOV R4, A
MOV A, R5
RLC A
MOV R5, A
MOV A, R6
RLC A
MOV R6, A
MOV A, R7
RLC A
MOV R7, A
RET
;
END
附C51程序
#INCLUDE <REG51.H>
#DEFINE UCHAR UNSIGNED CHAR
#DEFINE UINT UNSIGNED INT
#DEFINE ULONG UNSIGNED LONG
EXTERN VOID CS_T(VOID);
EXTERN VOID DELAY(UINT);
EXTERN VOID DISPLAY(UCHAR*);
//DATA UCHAR DISPLAY(UCHAR*);
DATA UCHAR TESTOK;
VOID MAIN (VOID)
{
DATA UCHAR DISPRAM[5];
DATA UINT I;
DATA ULONG TIME;
P0=0XFF;
P2=0XFF;
TMOD=0X11;
IE=0X80;
WHILE (1)
{
CS_T();
DELAY(1);
TESTOK=0;
EX0=1;
ET0=1;
WHILE(! TESTOK) DISPLAY(DISPRAM);
IF (1==TESTOK)
{
TIME=TH0;
TIME=(TIME<<8)| TL0;
TIME*=172;
TIME/=10000;
DISPRAM[0]=(UCHAR) (TIME%10);
TIME/=10;
DISPRAM[1]=(UCHAR) (TIME%10);
TIME/=10;
DISPRAM[2]=(UCHAR) (TIME%10);
DISPRAM[3]=(UCHAR) (TIME/10);
IF (0==DISPRAM[3]) DISPRAM[3]=17;
} ELSE
{
DISPRAM [0]=16;
DISPRAM [1]=16;
DISPRAM [2]=16;
DISPRAM [3]=16;
}
FOR (I=0;I<300;I++) DISPLAY(DISPRAM);
}
}
VOID CS_R(VOID) INTERRUPT 0
{
TR0=0;
ET0=0;
EX0=0;
TESTOK=1;
}
VOID OVERTIME(VOID) INTERRUPT 1
{
EX0=0;
TR0=0;
ET0=0;
TESTOK=2;
}
NAME CS_T
?PR?CS_T?CS_T SEGMENT CODE
PUBLIC CS_T
RSEG ?PR?CS_T?CS_T
CS_T: PUSH ACC
MOV TH0, #00H
MOV TL0, #00H
MOV A, #4D
SETB TR0
CS_T1: CPL p1.0
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ ACC,CS_T1
POP ACC
RET
;
END
NAME DELAY
?PR?_DELAY?DELAY SEGMENT CODE
PUBLIC _DELAY
RSEG ?PR?_DELAY?DELAY
_DELAY: PUSH ACC
MOV A,R7
JZ DELA1
INC R6
DELA1: MOV R5,#50D
DJNZ R5, $
DJNZ R7,DELA1
DJNZ R6,DELA1
POP ACC
RET
END
NAME DISPLAY
?PR?_DISPLAY?DISPLAY SEGMENT CODE
?CO?_DISPLAY?DISPLAY SEGMENT DATA
EXTRN CODE (_DELAY)
PUBLIC _DISPLAY
RSEG ?CO?_DISPLAY?DISPLAY
?_DISPLAY?BYTE:
DISPBIT: DS 1
DISPNUM: DS 1
RSEG ?PR?_DISPLAY?DISPLAY
_DISPLAY: PUSH ACC
PUSH DPH
PUSH DPL
PUSH PSW
INC DISPNUM
MOV A,DISPNUM
CJNE A,#4D,DISP1
DISP1: JC DISP2
MOV DISPNUM,#00H
MOV DISPBIT,#0FEH
DISP2: MOV A,R1
ADD A,DISPNUM
MOV R0,A
MOV A,@R0
MOV DPTR,#DISPTABLE
MOVC A,@A+DPTR
MOV P0,A
MOV A,DISPNUM
CJNE A,#2D,DISP3
CLR P0.7
DISP3: MOV P2,DISPBIT
MOV R5,#00H
MOV R7,#0AH
LCALL _DELAY
MOV P0,#0FFH
MOV P2,#0FFH
MOV A,DISPBIT
RL A
MOV DISPBIT,A
POP PSW
POP DPL
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
作者:
zx110
時間:
2017-12-2 21:57
你好,樓主,請問有沒有仿真文件啊
作者:
阿佳啊
時間:
2018-5-19 23:47
同問 請問有仿真文件嗎
作者:
12366abc
時間:
2018-11-30 15:10
想問一下,超聲波的trig tcho分別接在哪個io口?
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
成人免费一区二区三区视频网站
|
中国美女一级黄色片
|
天天干.com
|
色播视频在线观看
|
亚洲午夜精品一区二区三区
|
中文字幕在线观看
|
午夜成人在线视频
|
精品免费国产一区二区三区四区
|
久久国产美女视频
|
蜜桃在线一区二区三区
|
www.久久99
|
国产yw851.c免费观看网站
|
欧美日韩成人在线
|
国产精品免费一区二区三区四区
|
羞视频在线观看
|
色婷婷一区二区三区四区
|
看羞羞视频免费
|
天天夜干
|
日韩一区二区在线视频
|
青青草精品视频
|
亚洲国产成人av好男人在线观看
|
国产精品免费一区二区三区四区
|
国产精品美女久久久久aⅴ国产馆
|
欧美一区二区三区,视频
|
综合婷婷
|
国产精品一二三区在线观看
|
久久一区精品
|
亚洲一区精品在线
|
日韩成人免费中文字幕
|
皇色视频在线
|
欧美精品免费观看二区
|
伊人手机在线视频
|
在线视频91
|
日本在线播放一区二区
|
九九热在线视频
|
欧美激情精品久久久久久
|
白浆在线
|
狠狠操狠狠操
|
国产成人精品一区二三区在线观看
|
粉嫩一区二区三区国产精品
|
国产成人亚洲精品
|