山科大_《单片机的C语言程序设计与运用(第2版)》期末复习题及答(4)

2019-04-14 20:00

Sbit P17=P1^7; unsigned char i=3; void main( )

{ EA=1; IT0=1; EX0=1; P17=0; do{ }while(1); }

void interrupt0( ) interrupt 0 { i=i-1; if(i==0)

{ P17=!P17; i=3; } }

【例4-10】如图4-18所示,8只LED阴极接至单片机P0口,两开关S0、S1分别接至单片机引脚P3.2()和P3.3()。编写程序控制LED状态。按下S0后,点亮8只LED;按下S1后,变为闪烁状态。

16

#include sbit P32=P3^2;

void delay(unsigned int d) //定义延时子函数 { while(--d>0); }

void main( )

{ P0=0xFF; //熄灭LED

IT0=1; IT1=1; //外中断0、1脉冲触发方式 EA=1; EX0=1; EX1=1; //开中断 for( ; ; ) //延时等待中断发生 {;} }

void INT0_ISR( ) interrupt 0//外中断0中断服务函数

17

{ P0=0x00; }

void INT1_ISR( ) interrupt 2//外中断1中断服务函数 { while(P32!=0) //如果有外部中断0,则退出 { delay(5000); P0=0x00; delay(5000); P0=0xFF; } } 定时类

【例4-16】设单片机的fosc=12MHz,要求在P1.0上产生周期为2ms的方波。

要在P1.0上产生周期为2ms的方波,定时器应产生1ms的周期性定时,定时到对P1.0取反。

要产生1ms的定时,应选择方式1,定时器方式。

TMOD的确定:选择定时器/计数器T0,定时器方式。方式1,GATE不起作用,高4位为0000,TMOD=01H。

TH、TL的确定:单片机的fosc=12MHz,则单片机的机器周期为1ms,1ms=1000ms,计数器的计数初值为65 536-1000,TH0=(65 536-1000)/256,TL0=(65 536-1000)%6。 ① 采用查询方式

18

程序如下: #include sbit P1_0=P1^0; void main(void) { TMOD=0x01; TR0=1; for(;;)

{ TH0=(65536-1000)/256; TL0=(65536-1000)%6; do{ }while(!TF0); P1_0=!P1_0; TF0=0; } }

② 采用中断方式 程序如下: #include sbit P1_0=P1^0;

void timer0(void) interrupt 1 using 1 { P1_0=!P1_0;

TH0=(65536-1000)/256; TL0=(65536-1000)%6;

19

}

void main(void) { TMOD=0x01; P1_0=0;

TH0=(65536-1000)/256; TL0=(65536-1000)%6; EA=1; ET0=1; TR0=1;

do{ } while(1); }

【例4-17】设系统时钟频率为12MHz,编程实现从P1.1输出周期为1s的方波。

要输出周期为1s的方波,应产生500ms的周期性定时,定时到则对P1.1取反即可实现。

20


山科大_《单片机的C语言程序设计与运用(第2版)》期末复习题及答(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:刘学军《继电保护原理 》课后答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: