中职《单片机应用技术》案例库(素材,共17份)

资源下载
  1. 二一教育资源

中职《单片机应用技术》案例库(素材,共17份)

资源简介

中小学教育资源及组卷应用平台
广告灯(利用取表方式)
1. 实验任务
利用取表的方法,使端口P1做单一灯的变化:左移2次,右移2次,闪烁2次(延时的时间0.2秒)。
2. 电路原理图
3. 系统板上硬件连线
把“单片机系统”区域中的P1.0-P1.7用8芯排线连接到“八路发光二极管指示模块”区域中的L1-L8端口上,要求:P1.0对应着L1,P1.1对应着L2, ,P1.7对应着L8。
4. 程序设计内容
在用表格进行程序设计的时候,要用以下的指令来完成
(1). 利用MOV DPTR,#DATA16的指令来使数据指针寄存器指到表的开
头。
(2). 利用MOVC A,@A+DPTR的指令,根据累加器的值再加上DPTR的
值,就可以使程序计数器PC指到表格内所要取出的数据。 因此,只要把控制码建成一个表,而利用MOVC 工,@A+DPTR做取码的操作,就可方便地处理一些复杂的控制动作,取表过程如下图所示:
5.程序框图
6. 汇编源程序 ORG 0
START: MOV DPTR,#TABLE LOOP: CLR A MOVC A,@A+DPTR CJNE A,#01H,LOOP1 JMP START
LOOP1: MOV P1,A MOV R3,#20 LCALL DELAY INC DPTR JMP LOOP
DELAY: MOV R4,#20 D1: MOV R5,#248
DJNZ R5,$ DJNZ R4,D1 DJNZ R3,DELAY RET
TABLE: DB 0FEH,0FDH,0FBH,0F7H DB 0EFH,0DFH,0BFH,07FH DB 0FEH,0FDH,0FBH,0F7H DB 0EFH,0DFH,0BFH,07FH DB 07FH,0BFH,0DFH,0EFH DB 0F7H,0FBH,0FDH,0FEH DB 07FH,0BFH,0DFH,0EFH DB 0F7H,0FBH,0FDH,0FEH DB 00H, 0FFH,00H, 0FFH DB 01H END
7. C语言源程序
#include
unsigned char code table[]={0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f, 0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f, 0x7f,0xbf,0xdf,0xef, 0xf7,0xfb,0xfd,0xfe, 0x7f,0xbf,0xdf,0xef, 0xf7,0xfb,0xfd,0xfe, 0x00,0xff,0x00,0xff, 0x01};
unsigned char i;
void delay(void) {
unsigned char m,n,s; for(m=20;m>0;m--) for(n=20;n>0;n--) for(s=248;s>0;s--); }
void main(void) {
while(1) {
if(table[i]!=0x01) {
P1=table[i];
i++;
delay(); } else { i=0; } } }
21世纪教育网 www.21cnjy.com 精品试卷·第 2 页 (共 2 页)
21世纪教育网(www.21cnjy.com)中小学教育资源及组卷应用平台
模拟开关灯
1. 实验任务
如图1所示,监视开关K1(接在P3.0端口上),用发光二极管L1(接在单片机P1.0端口上)显示开关状态,如果开关合上,L1亮,开关打开,L1熄灭。
2. 电路原理图
图1
3. 系统板上硬件连线
(1). 把“单片机系统”区域中的P1.0端口用导线连接到“八路发光二极管指示模块”
区域中的L1端口上;
(2). 把“单片机系统”区域中的P3.0端口用导线连接到“四路拨动开关”区域中的
K1端口上;
4. 程序设计内容
(1). 开关状态的检测过程
单片机对开关状态的检测相对于单片机来说,是从单片机的P3.0端口输入信号,而输入的信号只有高电平和低电平两种,当拨开开关K1拨上去,即输入高电平,相当开关断开,当拨动开关K1拨下去,即输入低电平,相当开关闭合。单片机可以采用JB BIT,REL或者是JNB BIT,REL指令来完成对开关状态的检测即可。
(2). 输出控制
如图1所示,当P1.0端口输出高电平,即P1.0=1时,根据发光二极管的单向导电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电平,即P1.0=0时,发光二极管L1亮;我们可以使用SETB P1.0指令使P1.0端口输出高电平,使用CLR P1.0指令使P1.0端口输出低电平。
5. 程序框图
如图2所示。
图2
6. 汇编源程序 ORG 00H START: JB P3.0,LIG CLR P1.0 SJMP START
LIG: SETB P1.0 SJMP START END
7. C语言源程序
#include sbit K1=P3^0; sbit L1=P1^0; void main(void) {
while(1) {
if(K1==0)
{
L1=0; //灯亮 } else {
L1=1; //灯灭 } } }
21世纪教育网 www.21cnjy.com 精品试卷·第 2 页 (共 2 页)
21世纪教育网(www.21cnjy.com)中小学教育资源及组卷应用平台
多路开关状态指示
1. 实验任务
如图1所示,AT89S51单片机的P1.0-P1.3接四个发光二极管L1-L4,P1.4-P1.7接了四个开关K1-K4,编程将开关的状态反映到发光二极管上。(开关闭合,对应的灯亮,开关断开,对应的灯灭)。
2. 电路原理图
图1
3. 系统板上硬件连线
(1). 把“单片机系统”区域中的P1.0-P1.3用导线连接到“八路发光二
极管指示模块”区域中的L1-L4端口上;
(2). 把“单片机系统”区域中的P1.4-P1.7用导线连接到“四路拨动开关”区域中的K1-K4端口上;
4. 程序设计内容
(1). 开关状态检测
对于开关状态检测,相对单片机来说,是输入关系,我们可轮流检测每个开关状态,根据每个开关的状态让相应的发光二极管指示,可以采用JB P1.X,REL或JNB P1.X,REL指令来完成;也可以一次性检测四路开关状态,然后让其指示,可以采用MOV A,P1指令一次把P1端口的状态全部读入,然后取高4位的状态来指示。
(2). 输出控制
根据开关的状态,由发光二极管L1-L4来指示,我们可以用SETB P1.X和CLR P1.X指令来完成,也可以采用MOV P1,#1111XXXXB方法一次指示。
5. 程序框图
读P1口数据到ACC中→ACC内容右移4次→ACC内容与F0H相或→ACC内容送入P1口,如图2所示。
图2
6. 方法一(汇编源程序) ORG 00H
START: MOV A,P1
ANL A,#0F0H RR A RR A RR A RR A
XOR A,#0F0H MOV P1,A SJMP START END
7. 方法一(C语言源程序) #include unsigned char temp;
void main(void) {
while(1) {
temp=P1>>4;
temp=temp | 0xf0; P1=temp; } }
8. 方法二(汇编源程序) ORG 00H
START: JB P1.4,NEXT1 CLR P1.0 SJMP NEX1
NEXT1: SETB P1.0 NEX1: JB P1.5,NEXT2 CLR P1.1 SJMP NEX2
NEXT2: SETB P1.1 NEX2: JB P1.6,NEXT3 CLR P1.2 SJMP NEX3
NEXT3: SETB P1.2 NEX3: JB P1.7,NEXT4 CLR P1.3 SJMP NEX4
NEXT4: SETB P1.3 NEX4: SJMP START END
9. 方法二(C语言源程序) #include
void main(void) {
while(1) {
if(P1_4==0) {
P1_0=0; } else {
P1_0=1; }
if(P1_5==0) {
P1_1=0; } else {
P1_1=1; }
if(P1_6==0) {
P1_2=0; } else {
P1_2=1; }
if(P1_7==0) {
P1_3=0; } else {
P1_3=1; } } }
21世纪教育网 www.21cnjy.com 精品试卷·第 2 页 (共 2 页)
21世纪教育网(www.21cnjy.com)中小学教育资源及组卷应用平台
“嘀、嘀、 ”报警声
1. 实验任务
用AT89S51单片机产生“嘀、嘀、 ”报警声从P1.0端口输出,产生频率为1KHz,根据上面图可知:1KHZ方波从P1.0输出0.2秒,接着0.2秒从P1.0输出电平信号,如此循环下去,就形成我们所需的报警声了。
2. 电路原理图
3. 系统板硬件连线
(1). 把“单片机系统”区域中的P1.0端口用导线连接到“音频放大模块”区域中的SPK IN端口上, (2). 在“音频放大模块”区域中的SPK OUT端口上接上一个8欧或者是16欧的喇叭;
4. 程序设计方法
(1).生活中我们常常到各种各样的报警声,例如“嘀、嘀、 ”就是常见的一种声音报警声,但对于这种报警声,嘀0.2秒钟,然后断0.2秒钟,如此循环下去,假设嘀声的频率为1KHz,则报警声时序图如下图所示:
上述波形信号如何用单片机来产生呢?
(2). 由于要产生上面的信号,我们把上面的信号分成两部分,一部分为1KHZ方波,占用时间为0.2秒;另一部分为电平,也是占用0.2秒;因此,我们利用单片机的定时/计数器T0作为定时,可以定时0.2秒;同时,也要用单片机产生1KHZ的方波,对于1KHZ的方波信号周期为1ms,高电平占用0.5ms,低电平占用0.5ms,因此也采用定时器T0来完成0.5ms的定时;最后,可以选定定时/计数器T0的定时时间为0.5ms,而要定时0.2秒则是0.5ms的400倍,也就是说以0.5ms定时400次就达到0.2秒的定时时间了。
5. 程序框图
主程序框图
中断服务程序框图
6. 汇编源程序 T02SA EQU 30H T02SB EQU 31H FLAG BIT 00H ORG 00H LJMP START ORG 0BH LJMP INT_T0
START: MOV T02SA,#00H MOV T02SB,#00H CLR FLAG
MOV TMOD,#01H
MOV TH0,#(65536-500) / 256 MOV TL0,#(65536-500) MOD 256 SETB TR0 SETB ET0 SETB EA SJMP $ INT_T0:
MOV TH0,#(65536-500) / 256 MOV TL0,#(65536-500) MOD 256 INC T02SA
MOV A,T02SA
CJNE A,#100,NEXT INC T02SB MOV A,T02SB
CJNE A,#04H,NEXT MOV T02SA,#00H MOV T02SB,#00H CPL FLAG
NEXT: JB FLAG,DONE CPL P1.0 DONE: RETI END
21世纪教育网 www.21cnjy.com 精品试卷·第 2 页 (共 2 页)
21世纪教育网(www.21cnjy.com)中小学教育资源及组卷应用平台
一键多功能按键识别技术
1.实验任务
如图1所示,开关SP1接在P3.7/RD管脚上,在AT89S51单片机的P1端口接有四个发光二极管,上电的时候,L1接在P1.0管脚上的发光二极管在闪烁,当每一次按下开关SP1的时候,L2接在P1.1管脚上的发光二极管在闪烁,再按下开关SP1的时候,L3接在P1.2管脚上的发光二极管在闪烁,再按下开关SP1的时候,L4接在P1.3管脚上的发光二极管在闪烁,再按下开关SP1的时候,又轮到L1在闪烁了,如此轮流下去。
2.电路原理图
图1
3.系统板上硬件连线
(1). 把“单片机系统”区域中的P3.7/RD端口连接到“独立式键盘”
区域中的SP1端口上;(2). 把“单片机系统”区域中的P1.0-P1.4端口用8芯排线连接到“八路发光二极管指示模块”区域中的“L1-L8”端口上;要求,P1.0连接到L1,P1.1连接到L2,P1.2连接到L3,P1.3连接到L4上。
程序设计方法
(1). 设计思想
由来在我们生活中,我们很容易通过这个叫张三,那个叫李四,另外一个是王五;那是因为每个人有不同的名子,我们就很快认出,同样,对于要通过一个按键来识别每种不同的功能,我们给每个不同的功能模块用不同的ID号标识,这样,每按下一次按键,ID的值是不相同的,所以单片机就很容易识别不同功能的身份了。
(2). 设计方法
从上面的要求我们可以看出,L1到L4发光二极管在每个时刻的闪烁的时间是受开关SP1来控制,我们给L1到L4闪烁的时段定义出不同的ID号,当L1在闪烁时,ID=0;当L2在闪烁时,ID=1;当L3在闪烁时,ID=2;当L4在闪烁时,ID=3;很显然,只要每次按下开关K1时,分别给出不同的ID号我们就能够完成上面的任务了。下面给出有关程序设计的框图。
5.程序框图
如图2所示。
图2
6. 汇编源程序 ID EQU 30H SP1 BIT P3.7 L1 BIT P1.0 L2 BIT P1.1 L3 BIT P1.2 L4 BIT P1.3 ORG 0
MOV ID,#00H
START: JB K1,REL LCALL DELAY10MS JB K1,REL INC ID MOV A,ID
CJNE A,#04,REL MOV ID,#00H REL: JNB K1,$ MOV A,ID
CJNE A,#00H,IS0 CPL L1
LCALL DELAY SJMP START
IS0: CJNE A,#01H,IS1 CPL L2
LCALL DELAY SJMP START
IS1: CJNE A,#02H,IS2 CPL L3
LCALL DELAY SJMP START
IS2: CJNE A,#03H,IS3 CPL L4
LCALL DELAY SJMP START
IS3: LJMP START
DELAY10MS: MOV R6,#20 LOOP1: MOV R7,#248 DJNZ R7,$
DJNZ R6,LOOP1 RET
DELAY: MOV R5,#20
LOOP2: LCALL DELAY10MS DJNZ R5,LOOP2 RET END
7. C语言源程序
#include unsigned char ID; void delay10ms(void) {
unsigned char i,j; for(i=20;i>0;i--) for(j=248;j>0;j--); }
void delay02s(void) {
unsigned char i; for(i=20;i>0;i--) {delay10ms(); } }
void main(void) { while(1) { if(P3_7==0) {delay10ms(); if(P3_7==0) { ID++;
if(ID==4) { ID=0; }
while(P3_7==0); } }
switch(ID) { case 0: P1_0=~P1_0; delay02s(); break; case 1: P1_1=~P1_1; delay02s(); break; case 2: P1_2=~P1_2; delay02s(); break; case 3: P1_3=~P1_3; delay02s(); break; } } }
21世纪教育网 www.21cnjy.com 精品试卷·第 2 页 (共 2 页)
21世纪教育网(www.21cnjy.com)中小学教育资源及组卷应用平台
广告灯的左移右移
1. 实验任务
做单一灯的左移右移,硬件电路如图1所示,八个发光二极管L1-L8分别接在单片机的P1.0-P1.7接口上,输出“0”时,发光二极管亮,开始时P1.0→P1.1→P1.2→P1.3→┅→P1.7→P1.6→┅→P1.0亮,重复循环。
2. 电路原理图
图1
3. 系统板上硬件连线
把“单片机系统”区域中的P1.0-P1.7用8芯排线连接到“八路发光二极管指示模块”区域中的L1-L8端口上,要求:P1.0对应着L1,P1.1对应着L2, ,P1.7对应着L8。
4. 程序设计内容
我们可以运用输出端口指令MOV P1,A或MOV P1,#DATA,只要给累加器值或常数值,然后执行上述的指令,即可达到输出控制的动作。
每次送出的数据是不同,具体的数据如下表所示 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 说明
L8 L7 L6 L5 L4 L3 L2 L1 1 1 1 1 1 1 1 0 L1亮 1 1 1 1 1 1 0 1 L2亮 1 1 1 1 1 0 1 1 L3亮 1 1 1 1 0 1 1 1 L4亮 1 1 1 0 1 1 1 1 L5亮 1 1 0 1 1 1 1 1 L6亮 1 0 1 1 1 1 1 1 L7亮 0 1 1 1 1 1 1 1
L8亮
5.程序框图
如图2所示。
图2
6. 汇编源程序 ORG 0
START: MOV R2,#8 MOV A,#0FEH SETB C
LOOP: MOV P1,A LCALL DELAY RLC A
DJNZ R2,LOOP MOV R2,#8
LOOP1: MOV P1,A LCALL DELAY RRC A
DJNZ R2,LOOP1 LJMP START
DELAY: MOV R5,#20 D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET END
7. C语言源程序
#include unsigned char i; unsigned char temp; unsigned char a,b;
void delay(void) {
unsigned char m,n,s; for(m=20;m>0;m--) for(n=20;n>0;n--) for(s=248;s>0;s--); }
void main(void) {
while(1) {
temp=0xfe; P1=temp; delay();
for(i=1;i<8;i++) {
a=temp<b=temp>>(8-i); P1=a|b; delay(); }
for(i=1;i<8;i++) {
a=temp>>i;
b=temp<<(8-i); P1=a|b; delay(); } } }
21世纪教育网 www.21cnjy.com 精品试卷·第 2 页 (共 2 页)
21世纪教育网(www.21cnjy.com)中小学教育资源及组卷应用平台
动态数码显示技术
1. 实验任务
如图1所示,P0端口接动态数码管的字形码笔段,P2端口接动态数码管的数位选择端,P1.7接一个开关,当开关接高电平时,显示“12345”字样;当开关接低电平时,显示“HELLO”字样。
2. 电路原理图
图1
3. 系统板上硬件连线
(1). 把“单片机系统”区域中的P0.0/AD0-P0.7/AD7用8芯排线连接到“动态数码显示”区域中的a-h端口上;
(2). 把“单片机系统”区域中的P2.0/A8-P2.7/A15用8芯排线连接到“动态数码显示”区域中的S1-S8端口上;
(3). 把“单片机系统”区域中的P1.7端口用导线连接到“独立式键盘”区域中的SP1端口上;
4. 程序设计内容
(1). 动态扫描方法
动态接口采用各数码管循环轮流显示的方法,当循环显示频率较高时,利用人眼的暂留特性,看不出闪烁显示现象,这种显示需要一个接口完成字形码的输出(字形选择),另一接口完成各数码管的轮流点亮(数位选择)。
(2). 在进行数码显示的时候,要对显示单元开辟8个显示缓冲区,每个显示缓冲区装有显示的不同数据即可。
(3). 对于显示的字形码数据我们采用查表方法来完成。
5. 程序框图
如图2所示。
图2
6. 汇编源程序 ORG 00H
START: JB P1.7,DIR1 MOV DPTR,#TABLE1 SJMP DIR
DIR1: MOV DPTR,#TABLE2 DIR: MOV R0,#00H MOV R1,#01H NEXT: MOV A,R0 MOVC A,@A+DPTR MOV P0,A MOV A,R1 MOV P2,A LCALL DAY INC R0 RL A
MOV R1,A
CJNE R1,#0DFH,NEXT SJMP START
DAY: MOV R6,#4 D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 RET
TABLE1: DB 06H,5BH,4FH,66H,6DH TABLE2: DB 78H,79H,38H,38H,3FH END
7. C语言源程序
#include
unsigned char code table1[]={0x06,0x5b,0x4f,0x66,0x6d}; unsigned char code table2[]={0x78,0x79,0x38,0x38,0x3f}; unsigned char i; unsigned char a,b; unsigned char temp;
void main(void) {
while(1) {
temp=0xfe;
for(i=0;i<5;i++) {
if(P1_7==1) {
P0=table1[i]; } else {
P0=table2[i]; }
P2=temp;
a=temp<<(i+1); b=temp>>(7-i); temp=a|b;
for(a=4;a>0;a--) for(b=248;b>0;b--); } } }
21世纪教育网 www.21cnjy.com 精品试卷·第 2 页 (共 2 页)
21世纪教育网(www.21cnjy.com)中小学教育资源及组卷应用平台
00-59秒计时器(利用软件延时)
1. 实验任务
在AT89S51单片机的P0和P2端口分别接有两个共阴数码管,P0口驱动显示秒时间的十位,而P2口驱动显示秒时间的个位。
2. 电路原理图
3. 系统板上硬件连线
(1). 把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P0.0/AD0对应着a,P0.1/AD1对应着b, ,P0.7/AD7对应着h。
(2). 把“单片机系统”区域中的P2.0/A8-P2.7/A15端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P2.0/A8对应着a,P2.1/A9对应着b, ,P2.7/A15对应着h。
4. 程序设计内容
(1). 在设计过程中我们用一个存储单元作为秒计数单元,当一秒钟到来时,就让秒计数单元加1,当秒计数达到60时,就自动返回到0,从新秒计数。
(2). 对于秒计数单元中的数据要把它十位数和个数分开,方法仍采用对10整除和对10求余。
(3). 在数码上显示,仍通过查表的方式完成。
(4). 一秒时间的产生在这里我们采用软件精确延时的方法来完成,经过精确计算得到1秒时间为1.002秒。 DELY1S: MOV R5,#100 D2: MOV R6,#20 D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 DJNZ R5,D2 RET
5. 程序框图
6. 汇编源程序 Second EQU 30H ORG 0
START: MOV Second,#00H NEXT: MOV A,Second MOV B,#10 DIV AB
MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,A MOV A,B
MOVC A,@A+DPTR MOV P2,A
LCALL DELY1S INC Second MOV A,Second CJNE A,#60,NEXT LJMP START
DELY1S: MOV R5,#100 D2: MOV R6,#20 D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 DJNZ R5,D2 RET
TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END
7. C语言源程序
#include
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char Second;
void delay1s(void) {
unsigned char i,j,k; for(k=100;k>0;k--) for(i=20;i>0;i--) for(j=248;j>0;j--); }
void main(void) { Second=0;
P0=table[Second/10]; P2=table[Second%10]; while(1) {
delay1s(); Second++;
if(Second==60) {
Second=0; }
P0=table[Second/10]; P2=table[Second%10]; } }
21世纪教育网 www.21cnjy.com 精品试卷·第 2 页 (共 2 页)
21世纪教育网(www.21cnjy.com)中小学教育资源及组卷应用平台
00-99计数器
1. 实验任务
利用AT89S51单片机来制作一个手动计数器,在AT89S51单片机的P3.7管脚接一个轻触开关,作为手动计数的按钮,用单片机的P2.0-P2.7接一个共阴数码管,作为00-99计数的个位数显示,用单片机的P0.0-P0.7接一个共阴数码管,作为00-99计数的十位数显示。
2. 电路原理图
3. 系统板上硬件连线
(1). 把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P0.0/AD0对应着a,P0.1/AD1对应着b, ,P0.7/AD7对应着h。 (2). 把“单片机系统”区域中的P2.0/A8-P2.7/A15端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个数码管的a-h端口上; (3). 把“单片机系统”区域中的P3.7/RD端口用导线连接到“独立式键盘”区域中的SP1端口上;
4. 程序设计内容
(1). 单片机对按键的识别的过程处理
(2). 单片机对正确识别的按键进行计数,计数满时,又从零开始计数; (3). 单片机对计的数值要进行数码显示,计得的数是十进数,含有十位和个位,
我们要把十位和个位拆开分别送出这样的十位和个位数值到对应的数码管上显示。如何拆开十位和个位我们可以把所计得的数值对10求余,即可个位数字,对10整除,即可得到十位数字了。
(4). 通过查表方式,分别显示出个位和十位数字。
5.程序框图
6. 汇编源程序 Count EQU 30H SP1 BIT P3.7 ORG 0
START: MOV Count,#00H NEXT: MOV A,Count MOV B,#10 DIV AB
MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,A MOV A,B
MOVC A,@A+DPTR MOV P2,A
WT: JNB SP1,WT WAIT: JB SP1,WAIT LCALL DELY10MS JB SP1,WAIT INC Count MOV A,Count
CJNE A,#100,NEXT LJMP START
DELY10MS: MOV R6,#20 D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 RET
TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END
7. C语言源程序
#include
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char Count;
void delay10ms(void) {
unsigned char i,j; for(i=20;i>0;i--) for(j=248;j>0;j--); }
void main(void) {
Count=0;
P0=table[Count/10]; P2=table[Count%10]; while(1) {
if(P3_7==0) {
delay10ms(); if(P3_7==0) {
Count++;
if(Count==100) { Count=0; }
P0=table[Count/10]; P2=table[Count%10]; while(P3_7==0); } } } }
21世纪教育网 www.21cnjy.com 精品试卷·第 2 页 (共 2 页)
21世纪教育网(www.21cnjy.com)中小学教育资源及组卷应用平台
99秒马表设计
1. 实验任务
(1. 开始时,显示“00”,第1次按下SP1后就开始计时。 (2. 第2次按SP1后,计时停止。 (3. 第3次按SP1后,计时归零。
2. 电路原理图
3. 系统板上硬件连线
(1). 把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P0.0/AD0对应着a,P0.1/AD1对应着b, ,P0.7/AD7对应着h。
(2). 把“单片机系统”区域中的P2.0/A8-P2.7/A15端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P2.0/A8对应着a,P2.1/A9对应着b, ,P2.7/A15对应着h。
(3). 把“单片机系统“区域中的P3.5/T1用导线连接到”独立式键盘“区域中的SP1端口上;
4. 程序框图
主程序框图
T0中断服务程序框图
5. 汇编源程序
TCNTA EQU 30H TCNTB EQU 31H SEC EQU 32H KEYCNT EQU 33H SP1 BIT P3.5 ORG 00H LJMP START ORG 0BH LJMP INT_T0
START: MOV KEYCNT,#00H MOV SEC,#00H MOV A,SEC MOV B,#10 DIV AB
MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,A MOV A,B
MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P2,A
MOV TMOD,#02H SETB ET0 SETB EA
WT: JB SP1,WT LCALL DELY10MS JB SP1,WT INC KEYCNT MOV A,KEYCNT CJNE A,#01H,KN1 SETB TR0
MOV TH0,#06H MOV TL0,#06H MOV TCNTA,#00H MOV TCNTB,#00H LJMP DKN
KN1: CJNE A,#02H,KN2 CLR TR0 LJMP DKN
KN2: CJNE A,#03H,DKN MOV SEC,#00H MOV A,SEC MOV B,#10 DIV AB
MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,A MOV A,B
MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P2,A
MOV KEYCNT,#00H DKN: JNB SP1,$ LJMP WT DELY10MS: MOV R6,#20
D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 RET
INT_T0: INC TCNTA MOV A,TCNTA CJNE A,#100,NEXT MOV TCNTA,#00H INC TCNTB MOV A,TCNTB CJNE A,#4,NEXT MOV TCNTB,#00H INC SEC MOV A,SEC
CJNE A,#100,DONE MOV SEC,#00H DONE: MOV A,SEC MOV B,#10 DIV AB
MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,A MOV A,B
MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P2,A NEXT: RETI
TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END
21世纪教育网 www.21cnjy.com 精品试卷·第 2 页 (共 2 页)
21世纪教育网(www.21cnjy.com)中小学教育资源及组卷应用平台
定时计数器T0作定时应用技术(一)
1. 实验任务
用AT89S51单片机的定时/计数器T0产生一秒的定时时间,作为秒计数时间,当一秒产生时,秒计数加1,秒计数到60时,自动从0开始。
2. 电路原理图
3. 系统板上硬件连线
(1). 把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P0.0/AD0对应着a,P0.1/AD1对应着b, ,P0.7/AD7对应着h。(2). 把“单片机系统”区域中的P2.0/A8-P2.7/A15端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P2.0/A8对应着a,P2.1/A9对应着b, ,P2.7/A15对应着h。
4. 程序设计内容
AT89S51单片机的内部16位定时/计数器是一个可编程定时/计数器,它既可以工作在13位定时方式,也可以工作在16位定时方式和8位定时方式。只要通过设置特殊功能寄存器TMOD,即可完成。定时/计数器何时工作也是通过软件来设定TCON特殊功能寄存器来完成的。
现在我们选择16位定时工作方式,对于T0来说,最大定时也只有65536us,即65.536ms,无法达到我们所需要的1秒的定时,因此,我们必须通过软件来处理这个问题,假设我们取T0的最大定时为50ms,即要定时1秒需要经过20次的50ms的定时。对于这20次我们就可以采用软件的方法来统计了。
因此,我们设定TMOD=00000001B,即TMOD=01H
下面我们要给T0定时/计数器的TH0,TL0装入预置初值,通过下面的公式可以计算出
TH0=(216-50000) / 256 TL0=(216-50000) MOD 256
当T0在工作的时候,我们如何得知50ms的定时时间已到,这回我们通过检测TCON特殊功能寄存器中的TF0标志位,如果TF0=1表示定时时间已到。
5. 程序框图
6. 汇编源程序(查询法)
SECOND EQU 30H TCOUNT EQU 31H ORG 00H
START: MOV SECOND,#00H MOV TCOUNT,#00H MOV TMOD,#01H
MOV TH0,#(65536-50000) / 256 MOV TL0,#(65536-50000) MOD 256 SETB TR0
DISP: MOV A,SECOND MOV B,#10 DIV AB
MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,A MOV A,B
MOVC A,@A+DPTR MOV P2,A
WAIT: JNB TF0,WAIT CLR TF0
MOV TH0,#(65536-50000) / 256 MOV TL0,#(65536-50000) MOD 256 INC TCOUNT MOV A,TCOUNT CJNE A,#20,NEXT MOV TCOUNT,#00H INC SECOND MOV A,SECOND CJNE A,#60,NEX MOV SECOND,#00H NEX: LJMP DISP NEXT: LJMP WAIT
TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END
7. C语言源程序(查询法)
#include
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0x00}; unsigned char second; unsigned char tcount;
void main(void) {
TMOD=0x01;
TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; tcount=0; second=0;
P0=dispcode[second/10]; P2=dispcode[second%10]; while(1) {
if(TF0==1) {
tcount++;
if(tcount==20) { tcount=0; second++;
if(second==60) {
second=0; }
P0=dispcode[second/10]; P2=dispcode[second%10]; }
TF0=0;
TH0=(65536-50000)/256; TL0=(65536-50000)%256; } } }
21世纪教育网 www.21cnjy.com 精品试卷·第 2 页 (共 2 页)
21世纪教育网(www.21cnjy.com)中小学教育资源及组卷应用平台
可预置可逆4位计数器
1. 实验任务
利用AT89S51单片机的P1.0-P1.3接四个发光二极管L1-L4,用来指示当前计数的数据;用P1.4-P1.7作为预置数据的输入端,接四个拨动开关K1-K4,用P3.6/WR和P3.7/RD端口接两个轻触开关,用来作加计数和减计数开关。
2. 电路原理图
3. 系统板上硬件连线 (1. 把“单片机系统”区域中的P1.0-P1.3端口用8芯排线连接到“八路发
光二极管指示模块”区域中的L1-L4上;要求:P1.0对应着L1,P1.1对应着L2,P1.2对应着L3,P1.3对应着L4; (2. 把“单片机系统”区域中的P3.0/RXD,P3.1/TXD,P3.2/INT0,P3.3/INT1
用导线连接到“四路拨动开关”区域中的K1-K4上; (3. 把“单片机系统”区域中的P3.6/WR,P3.7/RD用导线连接到“独立式键
盘”区域中的SP1和SP2上;
4. 程序设计内容
(1). 两个独立式按键识别的处理过程;
(2). 预置初值读取的问题
(3). LED输出指示
5. 程序框图
6. 汇编源程序 COUNT EQU 30H ORG 00H
START: MOV A,P3 ANL A,#0FH MOV COUNT,A MOV P1,A
SK2: JB P3.6,SK1 LCALL DELY10MS JB P3.6,SK1 INC COUNT MOV A,COUNT
CJNE A,#16,NEXT MOV A,P3 ANL A,#0FH MOV COUNT,A NEXT: MOV P1,A
WAIT: JNB P3.6,WAIT LJMP SK2
SK1: JB P3.7,SK2 LCALL DELY10MS JB P3.7,SK2 DEC COUNT MOV A,COUNT
CJNE A,#0FFH,NEX MOV A,P3 ANL A,#0FH MOV COUNT,A NEX: MOV P1,A
WAIT2: JNB P3.7,WAIT2 LJMP SK2
DELY10MS: MOV R6,#20 MOV R7,#248 D1: DJNZ R7,$ DJNZ R6,D1 RET END
7. C语言源程序
#include
unsigned char curcount;
void delay10ms(void) { unsigned char i,j; for(i=20;i>0;i--) for(j=248;j>0;j--); }
void main(void) {
curcount=P3 & 0x0f; P1=~curcount; while(1) {
if(P3_6==0) {
delay10ms(); if(P3_6==0) {
if(curcount>=15) {
curcount=15; } else {
curcount++; }
P1=~curcount; while(P3_6==0); } }
if(P3_7==0) {
delay10ms(); if(P3_7==0) {
if(curcount<=0) {
curcount=0; } else {
curcount--; }
P1=~curcount; while(P3_7==0); } } } }
21世纪教育网 www.21cnjy.com 精品试卷·第 2 页 (共 2 页)
21世纪教育网(www.21cnjy.com)中小学教育资源及组卷应用平台
4×4矩阵式键盘识别技术
1. 实验任务
用AT89S51的并行口P1接4×4矩阵键盘,以P1.0-P1.3作输入线,以P1.4-P1.7作输出线;在数码管上显示每个按键的“0-F”序号。对应的按键的序号排列如下图所示。
2. 硬件电路原理图
3. 系统板上硬件连线
(1). 把“单片机系统“区域中的P3.0-P3.7端口用8芯排线连接到“4X4行列式键盘”区域中的C1-C4 R1-R4端口上;
(2). 把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P0.0/AD0对应着a,P0.1/AD1对应着b, ,P0.7/AD7对应着h。
4. 程序设计内容
(1). 4×4矩阵键盘识别处理
(2). 每个按键有它的行值和列值 ,行值和列值的组合就是识别这个按键
的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。每个按键的状态同样需变成数字量“0”和“1”,开关的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么;还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地,另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。
5. 程序框图
6. 汇编源程序 KEYBUF EQU 30H ORG 00H
START: MOV KEYBUF,#2 WAIT:
MOV P3,#0FFH CLR P3.4 MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY1
LCALL DELY10MS MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY1 MOV A,P3 ANL A,#0FH
CJNE A,#0EH,NK1 MOV KEYBUF,#0 LJMP DK1
NK1: CJNE A,#0DH,NK2 MOV KEYBUF,#1 LJMP DK1
NK2: CJNE A,#0BH,NK3 MOV KEYBUF,#2 LJMP DK1
NK3: CJNE A,#07H,NK4 MOV KEYBUF,#3 LJMP DK1 NK4: NOP DK1:
MOV A,KEYBUF MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,A
21世纪教育网 www.21cnjy.com 精品试卷·第 2 页 (共 2 页)
21世纪教育网(www.21cnjy.com)中小学教育资源及组卷应用平台
闪烁灯
1. 实验任务
如图1所示:在P1.0端口上接一个发光二极管L1,使L1在不停地一亮一灭,一亮一灭的时间间隔为0.2秒。
2. 电路原理图
图1
3. 系统板上硬件连线
把“单片机系统”区域中的P1.0端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上。
4. 程序设计内容
(1). 延时程序的设计方法
作为单片机的指令的执行的时间是很短,数量大微秒级,因此,我们要求的闪烁时间间隔为0.2秒,相对于微秒来说,相差太大,所以我们在执行某一指令时,插入延时程序,来达到我们的要求,但这样的延时程序是如何设计呢?下面具体介绍其原理:
如图1所示的石英晶体为12MHz,因此,1个机器周期为1微秒
MOV R6,#20 2个 2
D1: MOV R7,#248 2个 2 2+2×248=498 20
×
DJNZ R7,$ 2个 2×248 (498
DJNZ R6,D1 2个 2×20=40
10002
因此,上面的延时程序时间为10.002ms。
由以上可知,当R6=10、R7=248时,延时5ms,R6=20、R7=248时,延时10ms,以此为基本的计时单位。如本实验要求0.2秒=200ms,10ms×R5=200ms,则R5=20,延时子程序如下:
DELAY: MOV R5,#20 D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET
(2). 输出控制
如图1所示,当P1.0端口输出高电平,即P1.0=1时,根据发光二极管的单向导电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电平,即P1.0=0时,发光二极管L1亮;我们可以使用SETB P1.0指令使P1.0端口输出高电平,使用CLR P1.0指令使P1.0端口输出低电平。
5.程序框图
如图2所示。
图2
6. 汇编源程序 ORG 0
START: CLR P1.0 LCALL DELAY SETB P1.0 LCALL DELAY LJMP START
DELAY: MOV R5,#20 延时子程序,延时0.2秒 D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET END
7. C语言源程序
#include sbit L1=P1^0;
void delay02s(void) //延时0.2秒子程序 {
unsigned char i,j,k; for(i=20;i>0;i--) for(j=20;j>0;j--) for(k=248;k>0;k--);}
void main(void) {
while(1) { L1=0;
delay02s(); L1=1;
delay02s(); }
21世纪教育网 www.21cnjy.com 精品试卷·第 2 页 (共 2 页)
21世纪教育网(www.21cnjy.com)中小学教育资源及组卷应用平台
定时计数器T0作定时应用技术(二)
1. 实验任务
用AT89S51的定时/计数器T0产生2秒钟的定时,每当2秒定时到来时,更换指示灯闪烁,每个指示闪烁的频率为0.2秒,也就是说,开始L1指示灯以0.2秒的速率闪烁,当2秒定时到来之后,L2开始以0.2秒的速率闪烁,如此循环下去。0.2秒的闪烁速率也由定时/计数器T0来完成。
2. 电路原理图
3. 系统板硬件连线
(1). 把“单片机系统”区域中的P1.0-P1.3用导线连接到“八路发光二极管指示模块”区域中的L1-L4上
4. 程序设计内容
(1). 由于采用中断方式来完成,因此,对于中断源必须它的中断入口地址,对于定时/计数器T0来说,中断入口地址为000BH,因此在中断入口地方加入长跳转指令来执行中断服务程序。书写汇编源程序格式如下所示: ORG 00H LJMP START ORG 0BH 定时/计数器T0中断入口地址 LJMP INT_T0
START: NOP 主程序开始 . .
INT_T0: PUSH ACC 定时/计数器T0中断服务程序 PUSH PSW . .
POP PSW POP ACC
RETI 中断服务程序返回 END (2. 定时2秒,采用16位定时50ms,共定时40次才可达到2秒,每50ms
产生一中断,定时的40次数在中断服务程序中完成,同样0.2秒的定时,需要4次才可达到0.2秒。对于中断程序,在主程序中要对中断开中断。 (3. 由于每次2秒定时到时,L1-L4要交替闪烁。采用ID来号来识别。
当ID=0时,L1在闪烁,当ID=1时,L2在闪烁;当ID=2时,L3在闪烁;当ID=3时,L4在闪烁
5. 程序框图
T0中断服务程序框图 主程序框图
汇编源程序
   汇编源程序 TCOUNT2S EQU 30H TCNT02S EQU 31H ID EQU 32H ORG 00H LJMP START ORG 0BH LJMP INT_T0
START: MOV TCOUNT2S,#00H MOV TCNT02S,#00H MOV ID,#00H MOV TMOD,#01H
MOV TH0,#(65536-50000) / 256 MOV TL0,#(65536-50000) MOD 256 SETB TR0 SETB ET0 SETB EA SJMP $
INT_T0: MOV TH0,#(65536-50000) / 256 MOV TL0,#(65536-50000) MOD 256 INC TCOUNT2S MOV A,TCOUNT2S CJNE A,#40,NEXT MOV TCOUNT2S,#00H INC ID MOV A,ID
CJNE A,#04H,NEXT MOV ID,#00H
NEXT: INC TCNT02S MOV A,TCNT02S CJNE A,#4,DONE MOV TCNT02S,#00H MOV A,ID
CJNE A,#00H,SID1 CPL P1.0 SJMP DONE
SID1: CJNE A,#01H,SID2 CPL P1.1 SJMP DONE
SID2: CJNE A,#02H,SID3 CPL P1.2 SJMP DONE
SID3: CJNE A,#03H,SID4 CPL P1.3
SID4: SJMP DONE DONE: RETI END
7. C语言源程序
#include
unsigned char tcount2s; unsigned char tcount02s; unsigned char ID;
void main(void) {
TMOD=0x01;
TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; ET0=1; EA=1;
while(1); }
void t0(void) interrupt 1 using 0 {
tcount2s++;
if(tcount2s==40) {
tcount2s=0; ID++;
if(ID==4) { ID=0; } }
tcount02s++;
if(tcount02s==4) {
tcount02s=0; switch(ID) {
case 0: P1_0=~P1_0; break; case 1: P1_1=~P1_1; break; case 2: P1_2=~P1_2; break; case 3: P1_3=~P1_3; break; } } }
21世纪教育网 www.21cnjy.com 精品试卷·第 2 页 (共 2 页)
21世纪教育网(www.21cnjy.com)中小学教育资源及组卷应用平台
I/O并行口直接驱动LED显示
1. 实验任务
如图1所示,利用AT89S51单片机的P0端口的P0.0-P0.7连接到一个共阴数码管的a-h的笔段上,数码管的公共端接地。在数码管上循环显示0-9数字,时间间隔0.2秒。
2. 电路原理图
图1
3. 系统板上硬件连线
把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个数码管的a-h端口上;要求:P0.0/AD0与a相连,P0.1/AD1与b相连,P0.2/AD2与c相连, ,P0.7/AD7与h相连。
4. 程序设计内容
(1)LED数码显示原理
七段LED显示器内部由七个条形发光二极管和一个小圆点发光二极管组成,根据各管的极管的接线形式,可分成共阴极型和共阳极型。
LED数码管的g~a七个发光二极管因加正电压而发亮,因加零电压而不以发亮,不同亮暗的组合就能形成不同的字形,这种组合称之为字形码,下面给出共阴极的字形码见表2 “0” 3FH “8” 7FH “1” 06H “9” 6FH “2” 5BH “A” 77H “3” 4FH “b” 7CH “4” 66H “C” 39H “5” 6DH “d” 5EH “6” 7DH “E” 79H “7”
07H “F” 71H
(2). 由于显示的数字0-9的字形码没有规律可循,只能采用查表的方
式来完成我们所需的要求了。这样我们按着数字0-9的顺序,把每个数字的笔段代码按顺序排好!建立的表格如下所示:TABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
5.程序框图
如图2所示。
图2
6. 汇编源程序 ORG 0
START: MOV R1,#00H NEXT: MOV A,R1 MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,A LCALL DELAY INC R1
CJNE R1,#10,NEXT LJMP START
DELAY: MOV R5,#20 D2: MOV R6,#20 D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 DJNZ R5,D2 RET
TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END
7. C语言源程序
#include
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char dispcount;
void delay02s(void) {
unsigned char i,j,k; for(i=20;i>0;i--) for(j=20;j>0;j--) for(k=248;k>0;k--); }
void main(void) {
while(1) {
for(dispcount=0;dispcount<10;dispcount++) {
P0=table[dispcount]; delay02s(); } } }
21世纪教育网 www.21cnjy.com 精品试卷·第 2 页 (共 2 页)
21世纪教育网(www.21cnjy.com)中小学教育资源及组卷应用平台
报警产生器
1. 实验任务
用P1.0输出1KHz和500Hz的音频信号驱动扬声器,作报警信号,要求1KHz信号响100ms,500Hz信号响200ms,交替进行,P1.7接一开关进行控制,当开关合上响报警信号,当开关断开告警信号停止,编出程序。
2. 电路原理图
3. 系统板上硬件连线
(1). 把“单片机系统”区域中的P1.0端口用导线连接到“音频放大模块”区域中的SPK IN端口上;
(2). 在“音频放大模块”区域中的SPK OUT端口上接上一个8欧的或者是16欧的喇叭;
(3). 把“单片机系统”区域中的P1.7/RD端口用导线连接到“四路拨动开关”区域中的K1端口上;
4. 程序设计内容
(1). 信号产生的方法
500Hz信号周期为2ms,信号电平为每1ms变反1次,1KHz的信号周期为1ms,信号电平每500us变反1次;
5. 程序框图
6. 汇编源程序 FLAG BIT 00H ORG 00H
START: JB P1.7,START JNB FLAG,NEXT MOV R2,#200 DV: CPL P1.0 LCALL DELY500 LCALL DELY500 DJNZ R2,DV CPL FLAG NEXT: MOV R2,#200 DV1: CPL P1.0 LCALL DELY500 DJNZ R2,DV1 CPL FLAG SJMP START
DELY500: MOV R7,#250 LOOP: NOP DJNZ R7,LOOP RET END
7. C语言源程序
#include #include
bit flag;
unsigned char count;
void dely500(void) {
unsigned char i; for(i=250;i>0;i--) {
_nop_(); } }
void main(void) {
while(1) {
if(P1_7==0) {
for(count=200;count>0;count--) {
P1_0=~P1_0; dely500(); }
for(count=200;count>0;count--) {
P1_0=~P1_0; dely500(); dely500(); } } } }
21世纪教育网 www.21cnjy.com 精品试卷·第 2 页 (共 2 页)
21世纪教育网(www.21cnjy.com)

展开更多......

收起↑

资源列表