TR1=1; while(1); }
void timer1_int(void) interrupt 3 {
TH0=(65536-10000)/256; TL0=(65536-10000)%6; i++;
if(i==1) P1_1=0; else if(i==3) { } }
3.用单片机和内部定时器来产生矩形波,要求频率为100Hz,占空比为2:1,设单片机的时钟频率为12MHz,写出有关程序。(10分) 解:
#include
void main() {
i=0; TMOD=0x10;
TH0=(65536-10000)/256; TL0=(65536-10000)%6;
i=0; P1_1=1;
}
EA=1; ET1=1; TR1=1; while(1);
void timer1_int(void) interrupt 3 {
TH0=(65536-10000)/256; TL0=(65536-10000)%6; i++;
if(i==2) P1_1=0; else if(i==3)
{ i=0; P1_1=1; } }
4.如图1-1所示,单片机P1口的P1.0和P1.1各接一个开关S1、S2,P1.4、P1.5、P1.6和P1.7各接一只发光二极管。由S1和S2的不同状态来确定哪个发光二极管被点亮,如表1-4所示。(10分)
表1-4 S1、S2与二极管的关系 S2 0 0 1 1 S1 0 1 0 1 被点亮的二极管 VD1 VD2 VD3 VD4 解:(一)程序如下: #include
char a; a=P1 /*读P1口*/ a=a&0x03; /*屏蔽高6位*/ if(a==0) P1=0x83; else if a==1 P1=0x43; else if a==2 P1=0x23; else P1=0x13; }
(二)程序如下: #include “reg51.h” void main() { char a; a=P1; /*读P1口*/ a=a&0x03; /*屏蔽高6位*/ switch (a) { case0:P1=0x83;break; case1:P1=0x43;break; case2:P1=0x23;break; case3:P1=0x13; } }
(三)程序如下:
#include “reg51.h” void main() { char a; loop: a=P1; a=a&0x03; /*屏蔽高6位*/ switch (a) { case0:P1=0x83;break; case1:P1=0x43;break; case2:P1=0x23;break; case3:P1=0x13; } goto loop; }
(四)程序如下: #include “reg51.h” void main() { char a; while (1) { a=P1; a=a&0x03; /*屏蔽高6位*/ switch (a) { case0:P1=0x83;break; case1:P1=0x43;break; case2:P1=0x23;break; case3:P1=0x13; } } }
(五)程序如下: #include “reg51.h” void main() { char a; do { a=P1; a=a&0x03; /*屏蔽高6位*/ switch (a) { case0:P1=0x83;break; case1:P1=0x43;break; case2:P1=0x23;break; case3:P1=0x13; }
} while (1); }
(六)程序如下:
#include “reg51.h” void main() {
char a; for (; ;) {
a=P1;
a=a&0x03; /*屏蔽高6位*/ switch (a) {
case0:P1=0x83;break; case1:P1=0x43;break; case2:P1=0x23;break; case3:P1=0x13; } } }
5.外部中断0引脚(P3.2)接一个开关,P1.0接一个发光二极管。开关闭合一次,发光二极管改变一次状态,试编程。(10分)
解:程序如下: #include “reg51.h” #include “intrins.h” void delay(void) { int a=5000; while(a--)_nop_(); } void int_srv(void)interrupt 0 using 1
{ delay(); if(INT0==0) {P10=!P10;while(INT0==0);} }
void main() { P10=0; EA=1; EX0=1;while(1); }
6.让接在P1.0引脚上的LED发光,试编程。 解:程序如下: include
7.让接在P1.0引脚上的LED闪烁发光,试编程。 解:程序如下: #include\
#define uchar unsigned char #define uint unsigned int sbit P1_0=P1^0;
/*延时程序,有Delay参数确定延迟时间*/ void mdelay(uint Delay) { uint i;
for(;Delay>0;Delay--) { for(i=0;i<124;i++) {;} } }
void main() { for(;;) { P1_0=!P1_0; //取反P1.0引脚 mdelay(10000); } }
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C51语言复习题参考答案(3)在线全文阅读。
相关推荐: