单片机原理与接口技术广州大学自动化系肖忠1一、设计目标任务:秒表(LED显示)资源:1、I/O口2、内部定时器(模式、时钟、计数值)3、中断(定时器溢出)2二、典型硬件电路3三、知识点1-中断系统•中断概念•中断源•中断请求•中断响应•中断服务•中断返回•中断向量执行主程序主程序继续执行主程序断点中断请求中断响应执行中断服务程序中断返回4主程序A响应返回断点RETI……中断服务程序B三、知识点1-中断系统5三、知识点1-中断系统•中断•中断源(--TC1)•中断请求(--TC1溢出)•中断响应(--未屏蔽、中断允许)•中断服务(--秒针加1)•中断返回(--结束中断服务,回到断点)•中断向量(--中断服务程序的入口地址)6三、知识点2-中断向量147三、知识点3-中断控制I电平变化中断看门狗模拟比较器定时器0定时器1定时器2ADCSPITWI外部中断UARTCPU8三、知识点3-中断控制1、全局中断控制2、局部中断控制(定时器1溢出中断)9三、知识点3-中断控制10四、软件设计1-流程1、端口初始化;2、定时器初始化;3、中断控制器初始化;4、中断服务设计;5、主程序设计D口输出(1)时钟源(clk/64)(2)模式(普通)(3)计数初值49911溢出中断使能(1)重定定时值49911(2)秒计数加1(3)输出显示11四、软件设计2-代码1/*IO口初始化函数*/voidio_init(void){DDRD=0xFF;//方向输出PORTD=0xFF;//高电平}12四、软件设计2-代码2/*T1定时器初始化函数*/voidt1_init(void){TCCR1B=0x03;TCCR1A=0x00;TCNT1=49911;}13四、软件设计2-代码3/*T1定时器溢出中断服务程序*/#pragmainterrupt_handlerInt_T1:14voidInt_T1(void){TCNT1=49911;x++;PORTD=~x;}(1)重设定时值49911(2)秒计数加1(3)输出显示14四、软件设计2-代码3unsignedcharx=0;voidmain(void){io_init();t1_init();TIMSK1|=0x01;SREG|=0x80;(SEI();)while(1);}主程序流程1、端口初始化;2、定时器初始化;3、中断控制器初始化;4、开中断;5、等待;15五、电路仿真16六、实物演示17七、作业1、在跑马灯实验电路板上实现二进制秒表的功能2、(选做)增加三个按键,一个开始,一个停止,一个清零18附:电路图19本次课所学知识•IO端口----输入、输出、第二功能•定时器----普通、CTC、PWM•中断----定时器中断、外部中断•其它----AD、USART、SPI、比较器20课后复习•数据手册:P~•教材:P~21下一讲的主要内容•AVR22