ATmega8A基本编程

有项目用的这款单片机,所以就该单片机基本功能操作做了一个记录。

1:IO操作

 首先初始需要操作的IO,这里主要是配置为输入还是输出,如果是输出设置输出电平。
void port_init(void)
{
   
   
	//Run
	DDRC	|= 0x08;   //PC3
	PORTC	|= 0x08;   //set pb1 output high
	//Times
	DDRC	|= 0x04;   //PC2
	PORTC	|= 0x04;   //set pb1 output high  
	//Alarm
	DDRD |= 0x20;   //PD5
	PORTD |= 0x20;   //set pb1 output high
	//Dir485
	DDRD	|= 0x04;   //PD2
	PORTD	&= ~(1 << DIR485);  
	//PORT_DIR485	|= (1 << DIR485); 
	UCSRA |= (1 << TXC);
	
	//PLUS
	DDRD	|= 0x80;   //PD7
	PORTD	&= ~(1 << PLUS);
	
	//DDRC	&= 0xFE;   //PC0
	//PORTC	|= 0x01;	
}

然后就是在主循环中设置或者读取值。设置时,用PORT的定义,读取是用PIN的定义。

2:定时器

void timer0_init(void)
{
   
   
   TCCR0 = 0x00;     //timer0 普通模式
   TCCR0 = 0x03;     //预分频/64 启动TIME0 普通模式
   TCNT0 = 141;      //晶振8MHz, 频率为1KHz 0x83 = 256 - 8000000 / 64 / 1000 
					 //晶振7MHz, 频率为1KHz  141 = 256 - 7372800 / 64 / 1000  
   TIMSK|=0x01; 
   TIFR |= (1<<TOV0);
   //SREG|=0x80;      //使能全局中断
}

在主程序中
timer0_init();
sei(); //使能总中断

在中断程序中
ISR(TIMER0_OVF_vect){
   
   
	TCNT0 = 141;           //重装
	t_1s++;
	if(t_1s <= 800)   //1s到
	{
   
   
	 	PORT_RUN |= (1<<RUN);       //pd1输出高定平 	
	}
 	else
    {
   
   
  		PORT_RUN &= ~(1<<RUN);       //pd1输出低电平	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cetclyb

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值