单片机自检实验文档格式.docx

上传人:b****6 文档编号:20446731 上传时间:2023-01-23 格式:DOCX 页数:17 大小:18.05KB
下载 相关 举报
单片机自检实验文档格式.docx_第1页
第1页 / 共17页
单片机自检实验文档格式.docx_第2页
第2页 / 共17页
单片机自检实验文档格式.docx_第3页
第3页 / 共17页
单片机自检实验文档格式.docx_第4页
第4页 / 共17页
单片机自检实验文档格式.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

单片机自检实验文档格式.docx

《单片机自检实验文档格式.docx》由会员分享,可在线阅读,更多相关《单片机自检实验文档格式.docx(17页珍藏版)》请在冰豆网上搜索。

单片机自检实验文档格式.docx

AJMPLP1//没有溢出则继续查询

LP2:

INCR1//1s计数值+1

CJNER1,#20,LP1//没有达到1s则继续等待

MOVR1,#0//恢复初值

INCR0//若已到达1s,则显示值+1

CJNER0,#10,MAIN1//是否已显示10次?

走马灯自检

MOVP2,#0//关闭数码管

SETBP2.4//开LED显示

MOVR0,#0FEH//LED显示编码

MOVR1,#0//走马灯循环计数初始化

ZOUMA:

MOVP0,R0

MOVA,R0

RLA

MOVR0,A//走马灯右移

INCR1

MOVR4,#255

ACALLADELAY//延时一段时间

CJNER1,#8,ZOUMA

串行口自检

MAIN2:

MOVTMOD,#20H//设置计时器T1工作方式2

MOVSCON,#50H//设置为串行端口方式1,允许接收

MOVTH1,#0E8H//计数重装值

MOVTL1,#0E8H//计数器初值

SETBTR1//启动计时器T1

LP3:

MOVA,#55H//装入数据

MOVSBUF,A//发送数据

JNBTI,$//等待发送成功

CLRTI//软件清0

MOVR4,#2

JNBRI,ERRL//接收超时,转入错误提示

CLRRI//软件清0

MOVA,SBUF//读数据

CJNEA,#55H,ERRL//判断接收到的数据是否与发送的一致,不一致则跳转至错误提示

AJMPMAIN3//若结果正确,则跳转至AD检测

ERRL:

MOVDPTR,#ERR//LED显示表表头,以下用于显示错误信息

MOVP2,#0

MOVA,#0

MOVCA,@A+DPTR

MOVP0,A

SETBP2.0

MOVR4,#5

CLRP2.0

MOVA,#1

SETBP2.1

CLRP2.1

MOVA,#2

MOVCA,@A+DPTR

SETBP2.2

CLRP2.2

MOVA,#3

SETBP2.3

CLRP2.3

AJMPLP3

AD自检

MAIN3:

MOVTMOD,#11H//设置定时器工作方式

MOVTCON,#05H//设置为边沿触发

MOVIE,#8DH//开启计时器1、外部中断0、外部中断1的中断

MOVP3,#0FH

SETBRS0

USING1

MOVR0,#0

USING0

MOVR1,#0//50Ms循环计数初始化,累积两次为100ms

SETBTR0//启动定时器0

若没有到达100ms,则显示采样值。

MAIN4:

JBCTF0,ADC

LED:

CLRP2.3//关闭第三个LED数码管端口

MOVA,R5//读百位

SETBP2.1//打开第一个LED数码管端口

ACALLDALAY//延时

CLRP2.1//关闭第一个LED数码管端口

MOVA,R6//读十位

ACALLDALAY

CLRP2.2

MOVA,R7//读个位

ACALLDALAY

AJMPMAIN4

检测是否100ms到达,若是则调用AD采样,并转换为BCD码

ADC:

MOVTH0,#4CH//重新装人计数值

INCR1//50ms循环计数+1

CJNER1,#2,LED//50ms是否已经两次?

MOVR1,#0//以下用于BCD码转换

ACALLADP

MOVA,R2

MOVB,#100

DIVAB

MOVR5,A

MOVA,B

MOVB,#10

MOVR6,A

MOVR7,B

AJMPLED

TLC549AD转换子函数

端口:

P1.2:

CLKP1.3:

DATAOUTP1.4:

CS

ADP:

CLRP1.4//CS置低,启动数据传输

MOVR0,#00//循环次数初始化

NOP//延时等待确认CS变化

NOP

NXT:

SETBP1.2//置CLK高

MOVC,P1.3//读取DATAOUT的一位数据

RLCA//装入A累加器暂存,并右移

CLRP1.2//置CLK低

INCR0//循环计数+1

CJNER0,#8,NXT//一个字节的数据需要循环读取8次位数据

SETBP1.4//CS置高,进行下一次采样

MOVR2,A//存储采样值

RET

延时10ms子函数

DALAY:

MOVR4,#20//延时10ms

ADELAY:

MOVR3,#250

DJNZR3,$

DJNZR4,ADELAY

外部中断0

OINT0:

NOP

OINT1:

//ACALLDALAY//延时消抖

MOVA,P3

CJNEA,#0FH,LP4

AJMPLP5

LP4:

MOVTH1,#4CH//50ms定时的初值

MOVTL1,#00H

SETBTR1//启动定时器0

SETBP2.5//发声

LP5:

RETI

计时器1中断

TINT1:

INCR0

CJNER0,#10,LP6

CLRTR1

CLRP2.5

LP6:

RETI

数码管显示表

TAB:

DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH

ERR:

DB86H,0AFH,0AFH,0F9H

END

 

#include<

reg51.h>

intrins.h>

sbitP33=P3^3;

sbitP32=P3^2;

sbitP20=P2^0;

sbitP21=P2^1;

sbitP22=P2^2;

sbitP23=P2^3;

sbitP25=P2^5;

sbitCLK=P1^2;

sbitD0=P1^3;

sbitCS=P1^4;

chara,c,d,f;

charg=20;

inth=0;

unsignedintb,e;

unsignedchartable[]={0xC0,0xf9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x98,0x86,0xAF,0xAF,0xF9};

/***子函数****/

voiddelay(unsignedinttime)

{

unsignedintj=0;

for(;

time>

0;

time--)

for(j=0;

j<

125;

j++);

}

voidxianshi(x)

P0=table[x/1000%10];

P20=1;

delay(3);

P20=0;

P0=table[x/100%10];

P21=1;

P21=0;

P0=table[x/10%10];

P22=1;

P22=0;

P0=table[x%10];

P23=1;

P23=0;

charjianpan()

{

P3=0x0F;

if(P32==0||P33==0)

delay(20);

{

return1;

}

return0;

unsignedchartlc549()

unsignedchary,i;

D0=1;

CS=1;

CLK=1;

CS=0;

_nop_();

for(i=0;

i<

8;

i++)

{

y<

<

=1;

if(D0==1)y=y|0x01;

CLK=1;

_nop_();

CLK=0;

for(i=10;

i>

i--);

CS=1;

returny;

voidxianshiad(x)

P0=table[x/100%10];

P20=1;

delay(5);

P20=0;

P0=table[x/10%10];

P21=1;

P21=0;

P0=table[x%10];

P22=1;

P22=0;

/*****主函数*******/

voidmain()

/****流水灯********/

P2=0x10;

P0=0xFE;

for(a=8;

a>

a--)

delay(500);

P0=_crol_(P0,1);

/******数码管*******/

b=0;

c=1;

d=0;

P0=0x00;

P2=0x00;

TMOD=0x01;

TH0=(55536/256);

TL0=(55536%256);

EA=1;

ET0=1;

TR0=1;

while(c)

xianshi(b);

/*******串口*********/

f=1;

TR0=0;

TMOD=0x21;

TH1=0xF3;

TL1=0xF3;

TR1=1;

SCON=0x50;

PCON=0x00;

SBUF=255;

delay(1000);

e=SBUF;

if(e==255)

TR0=1;

while(f)

{

xianshi(e);

}

else

P0=table[10];

P20=1;

delay(3);

P20=0;

P0=table[11];

P21=1;

P21=0;

P0=table[12];

P22=1;

P22=0;

P0=table[13];

P23=1;

P23=0;

/********ad***********/

EX0=1;

EX1=1;

ET0=0;

//T0定时方式1

TL0=(55536%256);

tlc549();

delay(10);

while

(1)

xianshiad(h);

/****中断函数******/

voidtime0()interrupt1

if(c)

d++;

if(d==50)

d=0;

b=b+1111;

if(b==11110)

c=0;

if(!

c)

if(d==100)

f=0;

f)

g--;

if(g==0)

g=20;

h=tlc549();

_nop_();

if(jianpan())

if(jianpan())

{

P25=1;

delay(500);

P25=0;

}

voidwai0()interrupt0

if(jianpan())

voidwai1()interrupt2

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 艺术创意

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1