{ P1_0=!P1_0;
TH0=(65536-1000)/256;
用定时/计数器T0产生周期性为10ms的定时,然后用一个变量对10ms计数50次。系统时钟为12MHz,定时/计数器T0定时10ms,计数值N为10000,选方式1,方式控制字为00000001B(01H),则初值X为X=65536-10000。
ATL0=(65536-1000)%6; }
voidmain(void) { TMOD=0x01; P1_0=0;
TH0=(65536-1000)/256; TL0=(65536-1000)%6; EA=1; ET0=1; TR0=1; do{}while(1); }
设系统时钟频率为12MHz,编程实现从P1.1输出周期为1s的方波。 要输出周期为1s的方波,应产生500ms的周期性定时,定时到则对P1.1取反即可实现。
由于定时时间较长,一个定时器/计数器不能直接实现,一个定时器/计数器最长定时时间为65ms多一点,可以用以下两种方法实现。 (1)方法一
U1171615141312111028272625242322213233343536373839P3.7/RDP3.6/WRP3.5/T1P3.4/T0P3.3/INT1P3.2/INT0P3.1/TXDP3.0/RXDP2.7/A15P2.6/A14P2.5/A13P2.4/A12P2.3/A11P2.2/A10P2.1/A9P2.0/A8P0.7/AD7P0.6/AD6P0.5/AD5P0.4/AD4P0.3/AD3P0.2/AD2P0.1/AD1P0.0/AD0AT89C51P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.087654321BEAALEPSEN313029VCCRST9D1XTAL218R2470RXTAL119D0R1470R #include
i=0;
//
//
初始化 TMOD=0x01;
TH0=(65536-10000)/256; TL0=(65536-10000)%6;
第16页共25页
EA=1; ET0=1; TR0=1; while(1); }
voidtime0_int(void)interrupt1 //中断服务程序 {
TH0=(65536-10000)/256; //重载初始值
//
数方式时,计数脉冲通过T1(P3.5)输入。设定时/计数器T0定时时间到对P1.0取反一次,则T1(P3.5)每10ms产生一个计数脉冲,那么定时500ms只需计数25次,设定时/计数器T1工作于方式2,初值
X=256-25=231,TH1=TL1=231。因为定时/计数器T0工作于方式1,定时方式,则这时方式控制字为01100001B(61H)。定时/计数器T0和T1都采用中断方式工作。
//每发生
U1171615141312111028272625242322213233343536373839P3.7/RDP3.6/WRP3.5/T1P3.4/T0P3.3/INT1P3.2/INT0P3.1/TXDP3.0/RXDP2.7/A15P2.6/A14P2.5/A13P2.4/A12P2.3/A11P2.2/A10P2.1/A9P2.0/A8P0.7/AD7P0.6/AD6P0.5/AD5P0.4/AD4P0.3/AD3P0.2/AD2P0.1/AD1P0.0/AD0AT89C51P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.087654321VCCTL0=(65536-10000)%6; 重载初始值 i++;
一次中断,计数变量加1 if(i==50)
//发
D1R2470REAALEPSEN313029A9B18生50次中断,定时0.5ms {
P1_1=!P1_1;
//计数变量
RSTXTAL2i=0; 清零
XTAL119 #include
}
sbitP1_1=P1^1;
}
sbitP1_0=P1^0;
(2)方法二
voidmain()
用定时/计数器T1计数实现,对10ms
{
计数50次。定时/计数器T1工作于计
//初始化
第17页共25页
TMOD=0x61;
TH0=(65536-10000)/256; TL0=(65536-10000)%6; TH1=231;TL1=231; EA=1; ET0=1; TR0=1; while(1); }
voidtime0_int(void)interrupt1 //T0中断服务程序 {
TH0=(65536-10000)/256; //重载初始值
//
ET1=1; TR1=1;
高电平占0.2s,低电平占0.8s,超出了定时器的最大定时间隔,因此利用定时器0产生一个基准定时配合软件计数来实现。取50ms作为基准定时,采用工作方式1,这样这个周期需要20个基准定时,其中高电平占4个基准定时。 #include
TH0=(65536-50000)/256; TL0=(65536-50000)%6; EA=1; ET0=1; TR0=1; while(1); }
voidtime0_int(void)interrupt1 //中断服务程序
{ TH0=(65536-50000)/256;
//初
//定
TL0=(65536-10000)%6; 重载初始值 P1_0=!P1_0; }
voidtime1_int(void)interrupt3 //T1中断服务程序 {
P1_1=!P1_1;}
设系统时钟频率为12MHz,编程实现:P1.1引脚上输出周期为1s,占空比为20%的脉冲信号
根据输出要求,脉冲信号在一个周期内
第18页共25页
//重载初始值 A、-14B、-15C、240D、241 4.(—25)在计算机中的二进制表示形式为(A)
//高电平
A、10011001 11100110
//周期时
C、01100110 11100111
5.MCS-51单片机外部中断1对应的中
D
、
B
、
TL0=(65536-50000)%6; i=i+1;
if(i==4)P1_1=0; 时间到变低 elseif(i==20) 间到变高 { P1_1=1; i=0; } }
一、单项选择题。(每题1分,共20分) 1.一个完整的计算机系统通常包含(C) A、系统软件和应用软件B、计算机及其外部设备
C、硬件系统和软件系统D、系统硬件和系统软件
2.二进制数11000100转换为十进制数是多少?(C)
A、194B、195C、196D、197 3.补码11110001对应的真值用十进制表示为多少?(B)
//计数变量清零
断入口地址是多少?(C)
A、0003HB、000BHC、0013HD、001BH
6.MCS-51单片机的堆栈区设置在(B) A、片内RAM区B、片外RAM区 C、片内ROM区D、片外ROM区 7.51单片机的片外地址总线和数据总线的条数分别是(C)。
A、8和8B、8和16C、16和8D、16和16
8.当MCS-51单片机接有外部存储器,P2口可作为(D)。
A、数据输入口B、数据的输出口 C、准双向输入/输出口D、输出高8位地址
第19页共25页
9.下列关于51单片机堆栈的描述,正确的是(向上生长)。
A、向上生长型,按字处理B、向下生长型,按字处理
C、向上生长型,按字节处理D、向下生长型,按字节处理
10.标志寄存器的RS1和RS0位用于选择工作寄存器组,如果选择2组,则RS1和RS0是(C)。
A、0和0B、0和1C、1和0D、1和1
11.单片机读片外程序存储器信号是哪个?(B)
A、-PSENB、-EAC、ALED、-RD
的存储器类型是(C)
A、dataB、bdataC、codeD、xdata 15.在片外扩展一片8KB程序存储器芯片要(C)地址线。 根
16.某存储器芯片有11根地址线,8根数据线,该芯片有多少个存储单元?(A) A、2KBB、3KBC、4KBD、8KB 17.C51中,定时/计数器1的中断类型号是(C)。
A、1B、2C、3D、4
18.ADC0809的地址锁存信号是(A) A、ALEB、EOCC、CLOCKD、START 19.C51中外中断1的中断允许EX1需用()关键字定义。
A、bitB、sbitC、sfrD、sfr16 20.在KEIL51中形成的下载文件的扩展名是(D)。
A、CB、ASMC、EXED、HEX 二、填空。(每空1分,共20分) 1.微型计算机一般由四大部分组成,分别是微处理器、存储器、输入/输出设备A、10根B、12根C、13根D、16
12.C51程序中,利用下列(A)关键字可以定义中断函数 A、interruptB、sfr C、whileD、using
13.C51的int类型和long类型在存储器中占用的字节数是(D)
A、1和2B、2和3C、1和4D、2和4
14.C51中变量位于程序存储区,所用
第20页共25页
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C51单片机复习题ft(4)在线全文阅读。
相关推荐: