您的当前位置:首页正文

单片机实验

2020-04-10 来源:步旅网
石家庄铁道大学单片机实验题目

实验一 数据区赋值

(用指针、at、宏分别设计程序)

实现给片内RAM 30H和片外RAM 3000H开始的16字节区域分别赋值为0x01、0x02......0x0f。

At

#include //at

data unsigned char buffer1[16] _at_ 0x30; xdata unsigned char buffer2[16] _at_ 0x0030; void main() {

unsigned int i,j; for(i=0;i<16;i++) {

buffer1[i]=i; }

for(j=0;j<16;j++) {

buffer2[j]=j; } while(1); } 宏

#include//宏 void main() {

unsigned int i,a,b; a=0x30; b=0x0030; for(i=0;i<16;i++) {

DBYTE[a++]=i; XBYTE[b++]=i; } while(1); }

指针

#include //指针 void main(void) {

unsigned char data*p1; unsigned char xdata*p2; unsigned int i; p1=0x30; p2=0x3000; for(i=0;i<16;i++) { *p1=i; p1++; *p2=i; p2++; } }

实验二 数据区数据处理

对30H开始的内存区数据0x01~0x0f进行处理:

将30H开始的内容变成0x01、0x23、0x45......0xef存到40H开始的单元 将40H开始的内容变成0xef、0xcd.....0x23、0x01存到50H开始的单元

将50H开始的内容变成0x0f、0x0e、0x0d......0x01、0x00存到60H开始的单元

#include

#include #include

data unsigned char buffer1[16] _at_ 0x30; data unsigned char buffer2[8] _at_ 0x40; data unsigned char buffer3[8] _at_ 0x50; data unsigned char buffer4[16] _at_ 0x60; void main() {

unsigned int i,j,k,r; for(i=0;i<16;i++)

{buffer1[i]=i;}//30H赋值 for(j=0;j<8;j++)

{buffer2[j]=buffer1[2*j]<<4|buffer1[2*j+1];}//40H

for(k=0;k<8;k++)

{buffer3[k]=buffer2[7-k];}//50H for(r=1;r<16;r++) {

if(r%2==0)

buffer4[r-1]=buffer3[r/2-1]>>4;

else buffer4[r-1]=buffer3[r/2]&0x0f;}//60H }

实验三 并行口实验

P3.0接开关K0,设计程序实现:

当K0=0时,P1口连接的8个LED灯从LED0~LED7依次点亮; 当K0=1时,P1口连接的8个LED灯从LED7~LED0依次点亮;

#include

#define unchar unsigned char void delay() {

unchar i,j; for(i=0;i<255;i++) for(j=0;j<255;j++); }

void mian() {

unchar a,b,i; do

{P3=0xff;//将P3置为输入状态 a=P3;

a=a&0x01;//屏蔽高7位 if (a==0) {b=0x01; for(i=0;i<8;i++) {P1=b; delay(); b=b<<1;} } else {b=0x80;

for(i=0;i<8;i++) {P1=b; delay(); b=b>>1;} } }while(1); }

根据P3.1和P3.0连接的开关K1和K0的状态实现P1口连接的8只LED灯按以下形式亮灭: K1 K0 亮灯 0 0 8只灯全亮全灭交替 0 1 LED7~4和LED3~0交替全亮全灭 1 0 从全灭状态起,8只灯从两头到中间再从中间到两头依次点亮 1 1 从全亮状态起,8只灯从两头到中间依次点灭,再从中间到两头依次点亮 #include #define unchar unsigned char void delay() {unchar i,j; for(i=0;i<255;i++) for(j=0;j<255;j++); }

void mian() {unchar a,b,c,i; do {P3=0xff; a=P3;

a=a&0x03;//屏蔽高六位 switch(a) {case 0:

{for(i=0;i<2;i++) {P1=0x00; delay(); P1=0x0ff; delay();} }break; case 1:

{for(i=0;i<2;i++) {P1=0x0f; delay();

P1=0x0f0; delay();} }break; case 2: {P1=0x00; for(i=0;i<4;i++) {b=(0x01<>i)&0xf0; P1=b+c; delay();} for(i=0;i<4;i++) {b=(0x08>>i)&0x0f; c=(0x10<>i))&0xf0; P1=b+c; delay();} for(i=0;i<4;i++) {b=(~(0x08>>i))&0x0f; c=(~(0x10<实验四 外部中断实验1

INT0中断:P1接8个LED灯,点动开关接P3.2(INT0),负跳变产生中断,编写程序实现:主程序8只LED灯一起亮灭闪烁循环往复;INT0中断程序实现8个LED灯左右点亮循环5次后退出中断。

#include

#include #define unchar unsigned char void delay() { unchar i,j; for(i=0;i<255;i++) for(j=0;j<255;j++); }

void main() {EA=1; EX0=1; IT0=1; do{P1=0x00; delay(); P1=0xff; delay();} while(1); }

void int0() interrupt 0 using 1 {

unchar k,m; k=0x80;

for(m=0;m<40;m++)//左点亮循环5次 {P1=k; delay(); k=_cror_(k,1); } }

INT1中断:P1接8个LED灯,点动开关接P3.2(INT0),负跳变产生中断,编写程序实现:主程序8只LED灯一起亮灭闪烁循环往复;INT0中断程序实现8个LED灯左右点亮循环5次后退出中断。

#include

#include #define unchar unsigned char void delay() { unchar i,j; for(i=0;i<255;i++) for(j=0;j<255;j++);

}

void main() { EA=1; EX1=1; IT1=1; do{P1=0x00; delay(); P1=0xff; delay();} while(1); }

void int1() interrupt 2 using 2 {

unchar a,b,c; EX1=0; a=0x80;

for(b=0;b<5;b++) //左右点亮循环5次 {

for(c=0;c<8;c++) {P1=0x80>>c; delay();} for(c=0;c<8;c++) {P1=0x01<实验五 外部中断实验2:(中断优先级和中断嵌套实验)

两个外部中断:P1接8个LED灯,点动开关接P3.2 (INT0),K0开关接P3.3(INT1),均为负跳变产生中断和低优先级,编写程序实现如下功能:①主程序8只LED灯一起亮灭闪烁循环往复。②INT0中断程序实现:8个LED灯左点亮循环5次后退出中断;INT1中断程序实现8个LED灯右点亮循环5次后退出中断。(为方便实验现象观察,中断程序里的循环次数可改为10次)

运行程序,观察在INT0中断服务期间,INT1申请中断是否会响应?(不会)在INT1中断期间,INT0申请中断是否会响应?(不会)解释实验现象理解同优先级下的中断优先

顺序的知识。(自然优先级INT0>INT1,但进入中断后互不干扰;自然优先级下若同时触发INT0和INT1,则先响应INT0)

修改程序,INT0设为低优先级,INT1设为高优先级,运行程序观察实验现象: 在INT0中断程序运行中,INT1中断请求能否得到相应?(可以) 在INT1中断程序运行中,INT0中断请求能否得到相应? (不可以)

修改程序,INT0设为高优先级,INT1设为低优先级,运行程序观察实验现象: 在INT0中断程序运行中,INT1中断请求能否得到相应?(不可以) 在INT1中断程序运行中,INT0中断请求能否得到相应?(可以) 解释原因,加强对中断嵌套知识的理解。 (若手动设置优先级,(如PX0=1,PX1=0使INT0为高级中断、INT1为低级中断),高级中断可以打断执行中的低级中断)

(实验设置目的:体会中断管理机制,理解中断嵌套规则。)

#include

#include #define unchar unsigned char void delay() { unchar i,j; for(i=0;i<255;i++) for(j=0;j<255;j++); }

void main() { EA=1; EX0=1; EX1=1; IT0=1; IT1=1; IP=0;

//1.IP=0即PX0=0;PX1=1;同为低优先级 //2.PX0=0;PX1=1; //3.PX0=1;PX1=0; do{ P1=0x00; delay(); P1=0xff; delay(); } while(1); }

void int0() interrupt 0 using 1 {

unchar a,b; b=0x80;

for(a=0;a<40;a++) {P1=b; delay(); k=_cror_(b,1); } }

void int1() interrupt 2 using 2 {

unchar k,m; k=0x01;

for(m=0;m<40;m++) {P1=k; delay(); k=_crol_(k,1); } }

实验六 定时器实验

P1接8个LED灯,点动开关接P3.2 (INT0),负跳变产生中断。 编写程序实现如下功能:

① 主程序8只LED灯上电全灭。

② INT0中断程序实现:按一次启动定时器T0,再按一次停止。停止后恢复到上电状态。

③ 定时器T0实现:8个LED灯左点亮循环,每个点亮时间为1S。 (定时器分别用中断方式和查询方式实现。)

定时器初值计算:10000us=216-X*12/6 得X=ec78H 中断方式:

#include

#include unsigned char a,i=100; void main() {TMOD=0x01; TH0=0xec; TL0=0x78; P1=0x00; IT0=1;

EX0=1; EA=1; IT0=1; EX0=1; ET0=1; TR0=0; while(1);}

void temer0() interrupt 1 {TH0=0xec; TL0=0x78; i--; if(i<=0) {P1=a; a=_cror_(a,1); i=100; } }

void int0() interrupt 0 {TR0=~TR0; if(TR0==0) P1=0x00;} 查询方式: #include #include unsigned char a,i=100; void main() {TMOD=0X01; TH0=0Xec; TL0=0X78; P1=0X00; IT0=1; EX0=1; EA=1; IT0=1; EX0=1; TR0=0; while(1) {

if(TF0) {TF0=0? TH0=0Xec; TL0=0X78; i--; if(i<=0) {P1=a; a=_cror_(a,1); i=100;} } }

void int0() interrupt 0 {TR0=~TR0; if(TR0==0) P1=0x00;}

实验七 定时器计数器综合实验

P1接8个LED灯,P3.7接1个LED灯,点动开关接P3.2 (INT0),负跳变产生中断,P3.3 (INT1)用低电平触发中断。

编写程序实现如下功能:

① 主程序9只LED灯上电全灭。

② INT0中断程序实现:按一次启动定时器T0,再按一次停止。停止后恢复到上电状态。

③ INT1中断程序实现:按一次启动定时器T1,再按一次停止。停止后恢复到上电状态。

定时器T0实现:P3.7所接1个LED灯亮灭闪烁,亮灭时间各为1S。 计数器T1实现:记录由T1口所输入脉冲个数(P3.5输入下降沿),以二进制形式在P1口输出。

(提示:低电平触发及时恢复高电平,以免中断重入)

(计数器输入为T1(P3.5)、T0(P3.4)外部脉冲;定时器为系统时钟12分频,内部脉冲(一个机器周期1us))

#include

#include unsigned char i=100; sbit P3_7=P3^7; void main()

{TMOD=0X61;//(T1方式2.T0方式1)或2.TMOD=0X51;(T1.T0方式1) TH0=0Xec; TL0=0X78;

TH1=0Xff;//或2.TH1=0X00; TL1=0Xff;//或2.TL1=0X00;

P1=0X00; P3_7=0; EA=1; IT0=1; EX0=1; IT1=1; EX1=1; ET0=1; ET1=1; TR0=0; TR1=0;

while(1);//或2.P1=TL1;} void temer0() interrupt 1 {TH0=0Xec; TL0=0X78; i--; if(i<=0) {P3_7=~P3_7; i=100;} }

void int0() interrupt 0 {TR0=~TR0; if(TR0==0) P3_7=0;} void int1() interrupt 2 {TR1=~TR1; if(TR1==0) P1=0; }

void temer1() interrupt 3 // 2.TMOD=0X51;删掉该段 {unsigned char b; TH1=0Xff; TL1=0Xff; b++; P1=b;}

实验八 双机串行通讯基础实验

通信要求:fosc=6M,波特率2400,(提示:通讯双方工作在方式1,定时器1工作在

方式2定时模式,计数初值设为:0xf3,SMOD=1。)

程序设计内容:要求内部RAM30H开始的16个字节内容用程序实现赋值0~15。用查询或中断方式实现将甲机内部RAM 30H开始的16个字节的内容发送到已机并存入内部RAM 40H开始的单元中,并同时从P1口输出。

为了观察发送过程,要求每发送一个数据使甲机的P1_0连接的指示灯LED0亮灭一次。(亮灭延时时间自定,但要求能明显观察到亮灭状态转换。)

温馨提示:在中断处理模式中数据发送和接收完毕后,程序执行while(1);语句,可在此处设置断点运行程序;或者执行一直让P1_0连接的LED0灯常亮的死循环程序;在查询模式下发送和接收完毕后最后执行while(1);语句,可在此处设置断点运行程序;或者执行一直让P1_0连接的LED0灯常亮的死循环程序;)。

实验连线:甲机的P1.0分别接LED0,乙机P1接LED0~LED7,甲机RXD接乙机TXD,甲机TXD接乙机RXD,两机共地。

#include //甲发送(中断)

#include

data unsigned char buffer1[16] _at_ 0x30; unsigned char i,temp=0,j=0; sbit P1_0=P1^0; void delay() {

unsigned char m,n; for(m=0;m<255;m++) for(n=0;n<255;n++); }

void main() { for(i=0;i<16;i++) {buffer1[i]=i;} P1_0=0; TMOD=0X20; TH1=0xf3; TL1=0xf3; SCON=0X40; PCON=0X80; EA=1; ES=1; TR1=1;

SBUF=buffer1[0]; while(1);}

void serialtrp() interrupt 4 {TI=0;

SBUF=buffer1[j]; delay();

P1_0=~P1_0; j++; if(j==16) j=0; }

#include //乙接收中断 #include #define uchar unsigned char uchar i,j,Hong1=0x40,a=0; void main() {TMOD=0x20; TH1=0xf3; TL1= 0xf3; SCON=0x50; PCON=0x80; EA=1; ES=1; TR1=1; P1=0; while(1);}

void serall0() interrupt 4 {RI=0; if(a==16)

{ES=0; while(1);} else

{DBYTE[Hong1]=SBUF; a++;

P1=DBYTE[Hong1]; Hong1++;} }

#include //甲发送(查询1) #include

data unsigned char buffer1[16] _at_ 0x30; unsigned char i,temp=0,j=0; sbit P1_0=P1^0; void delay() {

unsigned char m,n; for(m=0;m<255;m++) for(n=0;n<255;n++); }

void main() { P1_0=0; TMOD=0X20; TH1=0xf3; TL1=0xf3; SCON=0X40; PCON=0X80; EA=1; ES=1; TR1=1; for(i=0;i<16;i++) {buffer1[i]=i;}

SBUF=buffer1[0];//可省 while(1) {

SBUF=buffer1[j]; delay(); P1_0=~P1_0; j++; if(j==16) j=0; while(TI==0); } }

#include//甲发送(查询2) #include #define uchar unsigned char sbit P1_0=P1^0;

data unsigned char buffer[16] _at_ 0x30; void delay(uchar j) {uchar t; while (j--)

{for (t=0;t<120;t++);

} }

void main() {uchar i,temp;

TMOD=0X20; TH1=0Xf3; TL1=0xf3; SCON=0X40; PCON=0X80; TR1=1; P1_0=0; while(1)

{for(i=0;i<16;i++) {buffer[i]=i; temp=buffer[i]; SBUF=temp; while(TI==0); TI=0; P1_0=1; delay(500); P1_0=0; delay(500); } } }

#include //乙查询 #include #define uchar unsigned char uchar i,j,Hong1=0x40,a=0; void main() {TMOD=0x20; TH1=0xf3; TL1= 0xf3; SCON=0x50; PCON=0x80; TR1=1; P1=0;

for(i=0;i<16;i++) {while(RI==0); RI=0;

DBYTE[Hong1]=SBUF; a++;

P1=DBYTE[Hong1]; Hong1++;} while(1); }

实验九 串行通信综合实验

通信要求:fosc=6M,波特率2400,通讯双方工作在方式1,定时器1工作在方式2定时模式,计数初值设为:0xf3,SMOD=1。

1、甲机通过点动开关的动作触发INT0下降沿中断,在中断程序中以查询方式向乙机发送开关K0~K7的状态,设计发送程序和乙机接收程序(查询还是中断接收自定)。

实验连线:甲机P1口接K0~K7,点动开关接INT0;乙机P1口接LED0~LED7;甲机RXD接乙机TXD,甲机TXD接乙机RXD,两机共地。

2、甲机通过1s定时方式,在定时中断程序中以查询或中断方式向乙机发送P1口连接的开关K0~K7的状态,乙机通过查询或中断方式接收甲机的开关信号并送乙机的P1口连接的LED灯LED0~LED7上。

为了便于观察发送过程,要求甲机每发送一个数据使P2_0连接的指示灯LED0亮灭一次(亮灭延时时间自定,但要求能明显观察到亮灭状态转换)。设计发送程序和接收程序(查询还是中断接收自定)。

实验连线:甲机P1口接K0~K7,P2.0接LED0观察发送过程;乙机P1口接LED0~LED7;甲机RXD接乙机TXD,甲机TXD接乙机RXD,两机共地。

#include //甲1发送

#include #define uchar unsigned char sbit P2_0=P2^0; uchar temp=0;

void delay(unsigned int i) { uchar j; for(;i>0;i--) for(j=0;j<125;j++); }

void main() {

TMOD=0x21; TH1=0xf3; TL1=0xf3; SCON=0x40;

PCON=0x80; TR1=0; EA=1; EX0=1; IT0=1; P2_0=0; P1=0xff; while(1){;}}

void int0(void) interrupt 0 using 0 {

TR1=~ TR1; temp=P1; SBUF=temp; delay(500); P2_0=~P2_0; delay(500); while(TI==0); TI=0; }

#include //九,2.甲发送(查询) unsigned char i=100,temp=0; sbit P2_0=P2^0; void main() {

TMOD=0X21; TH0=0xec; TL0=0x78; TH1=0xf3; TL1=0xf3; SCON=0X40; PCON=0X80; EA=1; ET0=1; TR0=1; TR1=1; P1=0xff; P2_0=1;

temp=P1;

SBUF=temp; while(1); }

void temer0() interrupt 1 {

TH0=0xec; TL0=0x78; i--; if(i<=0) {temp=P1; SBUF=temp; while(TI==0); TI=0; P2_0=~P2_0; i=100;} }

#include//乙接受(1.2相同) unsigned char temp=0; void main() {

TMOD=0x20; TH1=0xf3; TL1=0xf3; SCON=0x50; PCON=0x80; TR1=1; P1=0; while(1) {

while(RI==0); RI=0;

temp=SBUF; P1=temp; }}

实验十 定时、记数、显示

设计一个带有控制功能的脉冲发生器/计数器系统,脉冲发生器发出周期为2秒的方波(提示:可由P1.0口输出,用发光二极管显示);被计数脉冲由T0口输入,所记录的脉冲数以十进制形式在数码管显示(至少应可记录256个脉冲);设两个按键,一个启动脉冲发生器,一个启动记数,(按一次启动,再按一次停止),不启动时,发光管灭,数码管显示学号。

#include

#include #define uint unsigned int #define uchar unsigned char sbit P0_1=P0^1; uchar i=200;

uchar code seg1[]={0x06,0x7d,0x4f,0x4f,0x07,0x5b};

uchar code y2[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void delay(uint t) { uchar a;

while(t--)for(a=0;a<200;a++); }

void main() {

uchar m,j; TMOD=0x15; TH1=0xec; TL1=0x78, TH0=0X00; TL0=0X00; EA=1; ET0=1; TR0=0; TR1=0; P0_1=0; IT0=1; ET1=1; EX0=1; IT1=1; EX1=1; while(1) {if(TR0==0) {j=0x40;

for(i=0;i<6;i++) {

j= _cror_ (j,1);

P1=seg1[i]; P2=j; delay(1); } }

if(TR0==1) {j=0x04; P1=y2[TL0/100]; P2=j; delay(1); j=0x02;

P1=y2[(TL0%100)/10]; P2=j; delay(1); j=0x01;

P1=y2[(TL0%100)%10]; P2=j; delay(1); } } }

void int0() interrupt 0 {

TR0=~TR0; }

void int1() interrupt 2 {

TR1=~TR1; if(TR1==0) P0_1=0; }

void timer1() interrupt 3 {

TH1=0xEC; TL1=0x78; i--; if(i==0) {

P0_1=~P0_1; i=200; } }

实验十一、D/A转换实验

实验内容:假设0832工作在单缓冲方式 口地址为 0X8000。

根据P1.0~P1.1连接的K0~K1的状态,分别实现下述表格功能所要求的功能: K1 K0 波形输出 0 0 1 1 0 1 0 1 幅值从1V上升到4V的锯齿波 幅值从1V上升到4V的三角波 幅值从1V上升到4V的梯形波 幅值从1V和4V的方波

#include #include #define uchar unsigned char #define DA0832 XBYTE[0x8000] void delay() { uchar m,n;

for(m=0;m<255;m++) for(n=0;n<255;n++); }

void main() { uchar i,a; while(1) { P1=0xff;

a=P1&0x03; switch(a) { case 0: {

for(i=205;i>51;i--) DA0832=i; } break; case 1: {

for(i=51;i<205;i++) DA0832=i; for(i=205;i>51;i--) DA0832=i; } break; case 2: {

for(i=51;i<205;i++) DA0832=i; delay();

for(i=205;i>51;i--) DA0832=i; delay(); } break; case 3: { i=51; DA0832=i; delay(); i=205; DA0832=i; dalay(); }

break; } } }

实验十二:A/D转换实验

1、IN0端连接电位器滑动端,分别设计查询和中断程序不断采集电位器输出的模拟电压值,将A/D转换的结果通过P1口连接的8个LED显示出来。

实验连线:CS0接0809片选端(地址为0x8000,P1.0~P1.7接LED0~LED7。在查询方式下P3.0接EOC,在中断方式下EOC通过反相器再接INT0即P3.2。

2、定时数据采集程序设计:用T0定时30秒采集一次IN0连接的模拟信号并送P1口连接的LED显示的程序

#include//1.查询

#include #define uchar unsigned char #define IN0 XBYTE[0X8000] sbit EOC=P3^0; sbit start=P2^1; /*sbit OE=P2^0; sbit CLOCK=P2^2; sbit a=P2^3; sbit b=P2^4; sbit c=P2^5;*/ void main() { uchar *ad; uchar x; /*a=0; b=0; c=0;*/ while(1) { ad=&IN0; *ad=0; /*start=0; start=1; start=0;*/

while(EOC==0); x=*ad; //OE=1; P1=x; } }

#include//1.查询 #include #define uchar unsigned char #define IN0 XBYTE[0X8000] sbit EOC=P3^0; void main() { uchar t; P1=0; while(1)

{IN0=0;//启动转换,使START(内部和WR非相连)置1 while(EOC);//EOC为1,本句死循环;EOC为0,进行下句

while(!EOC);//EOC为0,本句死循环;EOC为1,进行下句;这两句共同构成EOC上升沿检测

t=IN0; P1=t; } }

#include//2.T0定时3秒 #include #define uchar unsigned char #define IN0 XBYTE[0X8000] sbit EOC=P3^0; uchar j=200; void main() {

TMOD=0x01; TL0=0x3C;

TH0=0xb0; P1=0x00; EA=1; ET0=1; TR0=1; while(1); }

void temer0() interrupt 1 {uchar x; uchar xdata *ad; TL0=0x3c; TH0=0xb0; j--; if(j<=0) { ad=&IN0; *ad=0; while(EOC==0); x=*ad; P1=x; j=200; } }

#include//2.T0定时3秒 #include #define uchar unsigned char #define IN0 XBYTE[0X8000] sbit EOC=P3^0; uchar j=200; void main() {

TMOD=0x01; TL0=0x3C; TH0=0xb0; P1=0x00; EA=1; ET0=1;

TR0=1; while(1); }

void temer0() interrupt 1 {uchar t; TL0=0x3c; TH0=0xb0; j--; if(j<=0) {

IN0=0;//启动转换,使START(内部和WR非相连)置1 while(EOC);//EOC为1,本句死循环;EOC为0,进行下句

while(!EOC);//EOC为0,本句死循环;EOC为1,进行下句;这两句共同构成EOC上升沿检测

t=IN0; P1=t; j=200; } }

#include//1.数码管显示 #include #include #define uchar unsigned char #define uint unsigned int #define IN0 XBYTE[0X8000]

uchar code y2[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; sbit EOC=P3^0; void delay(uint t) { uchar a;

while(t--)for(a=0;a<200;a++); }

void main() { uchar b,j; P1=0; while(1)

{IN0=0;//启动转换,使START(内部和WR非相连)置1 while(EOC);//EOC为1,本句死循环;EOC为0,进行下句

while(!EOC);//EOC为0,本句死循环;EOC为1,进行下句;这两句共同构成EOC上升沿检测

b=IN0; j=0x04;

P1=y2[b/100]; P2=j; delay(1); j=0x02;

P1=y2[(b%100)/10]; P2=j; delay(1); j=0x01;

P1=y2[(b%100)%10]; P2=j; delay(1); } }

因篇幅问题不能全部显示,请点此查看更多更全内容