完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本人在学习写两位秒表程序时出错,具体是LED一直显示两个0,秒表功能无法实现,求师傅指导,以下为我写的程序
#define EN_74HC138_ON PORTC|=BIT(7) #define EN_74HC138_OFF PORTC&=~BIT(7) typedef unsigned char uint8; typedef unsigned int uint16; typedef unsigned long uint32; uint8 const number1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0~9数值 uint8 number2[]={0,1,2,3,4,5,6,7};//位选0~7 uint8 units ,decade; void I0_init(void) { DDRA|=0x07; PORTA|=0x07; DDRB=0xff; PORTB=0xff; DDRC|=BIT(7); EN_74HC138_ON; } void time1_init(void) { TCCR1B|=0x02;//8分频,片内1M晶振 TCNT1H=0xcf;//(65536-(1000000/8)*0.1)/256;//每100MS溢出 TCNT1L=0x2c;//(65536-(1000000/8)*0.1)/256; TIMSK=0x04;//TIMSK|=TOIE1; SREG|=BIT(7); } void main(void) { I0_init(); Time0_init(); while(1) { PORTA=number2[0]; PORTB=number1[units]; PORTA=number2[1]; PORTB=number1[decade]; } } #pragma interrupt_handler Time1_init_isr:9 void Time1_init_isr(void) { uint8 count; uint16 second; TCNT1H=0xcf;//(65536-(1000000/8)*0.1)/256; TCNT1L=0x2c;//(65536-(1000000/8)*0.1)/256; count++; if(count==10) { count=0; second++; if(second==100) { second=0; } units=second%10; decade=second/10%10; } } |
|
相关推荐
6 个讨论
|
|
什么错误,说出来大家才好看啊,有针对性,这样??
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
AVR Atmega16 Bootloader程序与上位机LabView程序
5130 浏览 6 评论
#include <ioavr.h>这个头文件我应该下什么编译器
7772 浏览 0 评论
3033 浏览 2 评论
3107 浏览 1 评论
10061 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 20:11 , Processed in 0.685782 second(s), Total 59, Slave 46 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号