基于ATmega128单片机的红外控制电机系统源码

2019-11-09来源: 51hei关键字:ATmega128  单片机  红外控制  电机系统

单片机源程序如下:

#include "Main.h"

SIGNAL(SIG_OVERFLOW0) //中断每1秒发一个数

{

        

        TCNT0 = 200; 

        TIMSK &= ~_BV(TOIE0);  //TIMSK中TOIE0置0

        if(++g_bCount>1)

        {

                g_bCount = 0;

                

                TaskInTimer();

        }

        /*if(++g_aCount > 44)      //3s定时

        {

                g_aCount = 0;

                Table_Locked();

        }*/


        TIMSK |= _BV(TOIE0);  //开中断

}


SIGNAL(SIG_OVERFLOW2)        //中断每1秒发一个数

{

        TCNT2 = 150; 

        TIMSK &= ~_BV(TOIE2);     //TIMSK中TOIE2置0 关闭中断

        if(++Time_Count > 21)      //3s定时

        {

                Time_Count = 0;

                //flag_3s = 1;

                Table_Locked();

        }

        TIMSK |= _BV(TOIE2);       //开中断

}



void Init()

{

        cli();                    //关闭所有中断

        Key_Init();

        PortInit();

        Time_Init();

        

        sei();                    //打开所有中断

        InitADC();

}


void Delay_1ms()

{

        uint i;

        for(i = 0;i < 570;i--)

                ;

}


void Delay_1s()

{

        uint i;

        for(i = 0;i < 2000;i++)

        {

                Delay_1ms();

        }

}


void Delay_xs(uint x)

{

        uint i;

        for(i = 0;i < x;i++)

        {

                Delay_1s();

        }

}


void PortInit()

{

        DDRA = 0xff;

        PORTA = 0xe2;       //LED 0xe2

        DDRC = 0xff;

        PORTC = 0xff;       //Motor

        DDRE = 0x00;        

        PORTE = 0xf8;       //Remote Control

        DDRF =0x00;         //ADC

        PORTF = 0x00;

}




void Time_Init()

{

        TCNT0 = 200;

        g_bCount = 0;

        TCCR0 = _BV(CS02)|_BV(CS00)|_BV(CS01);  //CS02置1,CS00,cs01置1 //1024分频

        TIMSK |= _BV(TOIE0);

        TCNT2 = 150;

        Time_Count = 0;

        TCCR2 = _BV(CS22)|_BV(CS20);  //CS02置1,|_BV(CS21)CS00,cs01置1 //1024分频

        TIMSK |= _BV(TOIE2);

}




void main()

{

        Init();

        while(1)

        {

                Key_scan();

        }

}




void TaskInTimer()

{

        DJ_Run();

        TaskInADC();

}


/*void TestInTimer()

{

        if(flag_Time == 0 && flag_FTime == 0)

        {

                //PORTA |= (1 << PA1);              //locked LED on进入锁定模式

                flag_Locked = 0;

                flag_Manual = 0;

                flag_Follow = 0;

                PORTC = 0xff;

                flag_clockrise = 0;

                flag_cclockrise = 0;

                PORTA &= ~(1 << PA3);             //auto LED off

                PORTA &= ~(1 << PA2);             //manual LED off

                PORTA &= ~(1 << PA0);             //motion LED off

                PORTA &= ~(1 << PA4);             //ADC off

                PORTA |= (1 << PA1);              //locked LED on进入锁定模式

        }

}*/


……………………



关键字:ATmega128  单片机  红外控制  电机系统 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic479508.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:AVR stdio写的ATMEGA16控制步进电机正反转和速度
下一篇:AVR单片机经典使用经验

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

Atmega32A驱动LCD1602显示屏
对于初学者来说,最烦躁的可能就是调试程序,往往小小一个问题,要找个一个小时,甚至几个小时才能解决,这个程序是刚调试完的,整整九个多小时啊,现在看着挺简单的,没调试好前根本不敢肯能调得好.高手别笑,初学者参考编程环境Atmel Studio 7.0 和Proteus 8仿真,说明:仿真和真实电路是有点区别的,仿真Proteus 8只能用内部晶振,最大8MHz,我的DIY板是16M,所以实际电路总是比仿真的跑快好多单片机源程序:/** LCD1602_AVR.h** Created: 2017/3/19 23:07:51*  Author: lyl*LCD1602的基本操作时序      &nbs
发表于 2019-11-11
Atmega32A驱动LCD1602显示屏
ATMEGA16L实现时间和温度的循环显示程序分享
//ICC-AVR application builder : 2/13 20:52:33/******************************************************************************** 版权:     ** 单片机:   ATMAGE16L* 晶振:     外部8MHz* 编译器:   ICC 7.22** 文件名:   main.c* 作者:     木子工作室* 版本:     1.0* 完成日期: * 功能描述: 在12M晶振下,
发表于 2019-11-09
AVR stdio写的ATMEGA16控制步进电机正反转和速度
AVR stdio写的ATMEGA16控制步进电机正反转和速度,供大家免费参阅和批评适合初学者,总共七个按键  三个按键控制三个速度正转,三个按键控制三个速度反转,一个按键控制停止。本程序控制步进电机是和步进电机驱动器相连接的,所以脉冲只有一路,如果想直接连步进电机只需要稍加改动即可。 主程序预览:#define F_CPU 800000UL#include <avr/io.h>#include <util/delay.h>#define INT8U unsigned int#define INT16U unsigned intconst INT8U FFW[]={0x01
发表于 2019-11-09
AVR stdio写的ATMEGA16控制步进电机正反转和速度
atmega16与24l01按键主程序
#include<avr/io.h>#include<avr/delay.h>#include"NRF24L01.h"//#define Open_TX#define Open_RXtypedef unsigned char  uint8;                   /* defined for unsigned 8-bits integer variable     无符号8位整型变量 &n
发表于 2019-11-08
ATmega8+PT100热敏电阻+AD824S proteus仿真与源程序
pt100热敏电阻+AD824S放大并由ATmega8单片机主控的测温系统仿真原理图如下ATmega8单片机源程序如下:/*****************************************************This program was produced by theCodeWizardAVR V2.03.4 StandardAutomatic Program Generator?Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.Project : Version : Date    
发表于 2019-11-08
ATmega8+PT100热敏电阻+AD824S proteus仿真与源程序
小家电热销带动盛群,新唐单片机出货量激增
由于今年白色小家电需求依旧热络,10月开始一波急单带动IC设计盛群(6202)、新唐(4919)MCU出货量增,加上年底耶诞节购物需求,及上半年库存去化告一段落,第四季业绩将优于第三季,全年营运可望倒吃甘蔗。10月相关白牌小家电零组件IC出现节前急单拉货潮,盛群表示,10月开始,已感受到订单回流迹象,客户及终端库存去化、中国双11及年底拉货旺季到来,且中国去美化政策逐季发酵,客户拉货态度转趋积极。上半年受到贸易战影响,客户拉货态度观望,下半年库存水位已降至低点,MCU厂在客户要求下,于10月备妥急单需求,主要以小家电商品IC为主,第四季进入全年出货旺季,法人预估今年第四季MCU厂业绩可望成为全年最高点。
发表于 2019-11-11
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved