• 大小: 121KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-03
  • 语言: 其他
  • 标签: uC/OS-II  ATMega16  ICCAVR  

资源简介

uC/OS-II 编译器: ICCAVR CPU ATMega16 8MHz 晶振 对原uC/OS-II进行了简化,去掉了hook,保留了基本功能,代码精简,编译后代码占 Mega16 的 26% 时钟使用timer2,中断时间为2 ms //**************************************************// //**************************************************// 任务1:刷新LED,检测按键,调整时间 任务2:计时,串口发送 9600 bps //**************************************************// //**************************************************// 作者: PiQiu 网站: www.txmcu.com 邮箱: songbaosena@163.com //**************************************************//

资源截图

代码片段和文件信息


#ifndef  OS_MASTER_FILE
#include “includes.h“
#include “AVR_PQ1A.h“
#endif

#pragma data:code 
const SEGMENT[16]={0x3f0x060x5b0x4f0x660x6d0x7d 0x07
   0x7f0x6f0x770x7c0x390x5e0x790x71};
#pragma data:data   
/*******************************************
函数名称: DS1302_init
功    能: 初始化DS1302的数据接口
参    数: 无
返回值  : 无
/********************************************/
void DS1302_portinit(void)   
{
 DDRB|=BIT(RTC_CLK)|BIT(RTC_DATA)|BIT(RTC_CS);//将时钟端(RTC_CLK)数据端(RTC_DATA)片选端(RTC_CS)设置为输出
}
/*******************************************
函数名称: DS1302_writeB
功    能: 向DS1302写入一个字节数据(没有RST操作)
参    数: byte--要写入的数据
返回值  : 无
/********************************************/
void DS1302_writeB(uchar byte)
{
 uchar i;
 for(i=0;i<8;i++)     //8位数据计数
 {
  PORTB&=~BIT(RTC_CLK);   //拉低时钟端
  if(byte&0x01)   //当前位是否是1
  {
   PORTB|=BIT(RTC_DATA);   //当前位是1,拉高数据端
  }
  else   
  {
   PORTB&=~BIT(RTC_DATA);   //当前位是0,拉低数据端
  }  
  Delayus(10);   //调整时钟和脉冲宽度
  PORTB|=BIT(RTC_CLK);   //时钟上升沿(DS1302采样数据)
  byte>>=1;   //数据右移1位,为送出新数据位做准备
 }
}
/*******************************************
函数名称: DS1302_readB
功    能: 从DS1302读出一个字节数据(没有RST操作)
参    数: 无
返回值  : byte--读出的数据
/********************************************/
uchar DS1302_readB(void)
{
 uchar ibyte=0;
 DDRB&=~BIT(RTC_DATA);  //将数据端口设置为输入   
 PORTB&=~BIT(RTC_DATA);  //无上拉电阻
 for(i=0;i<8;i++)  //8位数据计数
 {
  byte>>=1;    //保存读入的数据位
  PORTB|=BIT(RTC_CLK);  //时钟上升沿
  Delayus(10);  //延时,调整时钟脉冲宽度
  PORTB&=~BIT(RTC_CLK);  //时钟下降沿,DS1302输出数据位
  Delayus(10);  //等待数据变化(MEGA16太快,必须等待DS1302的数据位输出,否则不能正确读出)
  if(PINB&BIT(RTC_DATA))  //当前位是否是高电平
  {
   byte|=BIT(PB7);  //是高电平就将返回数据的当前位置1
  }
  else
  {
   byte&=~BIT(PB7);  //是低电平就将返回数据的当前位置0
  }
 }
 DDRB|=BIT(RTC_DATA);  //最后将数据端口设置为输出
 return byte;  //返回读出的数据
}
/*******************************************
函数名称: DS1302_writeD
功    能: 向DS1302的某个地址写入一个字节数据
参    数: addr--地址值(寄存器或RAM)
     data--要写入的地址
返回值  : 无
/********************************************/
void DS1302_writeD(uchar addruchar data)
{
 PORTC&=~BIT(RTC_CS);  //拉低片选端
 PORTB&=~BIT(RTC_CLK);  //拉低时钟端
 Delayus(10);
 PORTC|=BIT(RTC_CS);  //拉高片选端
 Delayus(10);   //调整片选脉冲
 DS1302_writeB(addr);  //写入操作命令(地址)
 Delayus(10);
 PORTB&=~BIT(RTC_CLK);  //拉低时钟端
 Delayus(10);
 DS1302_writeB(data);  //写入数据
 PORTB&=~BIT(RTC_CLK);  //拉低时钟端
 Delayus(10);  //调整片选脉冲
 PORTC&=~BIT(RTC_CS);  //拉低片选端
}
/*******************************************
函数名称: DS1302_readD
功    能: 从DS1302的某个地址读出一个字节数据
参    数: addr--地址值(寄存器或RAM)
返回值  : data--读出的数据
/********************************************/
uchar DS1302_readD(uchar addr)
{
 uchar data;
 PORTC&=~BIT(RTC_CS);  //拉低片选端
 PORTB&=~BIT(RTC_CLK);  //拉低时钟端
 Delayus(10);
 PORTC|=BIT(RTC_CS);  //拉高片选端
 Delayus(10);   //调整片选脉冲
 DS1302_writeB(addr);  //写入操作命令(地址)
 Delayus(10);
 data=DS1302_readB();  //读出数据
 Delayus(10);
 PORTB&=~BIT(RTC_CLK);  //拉

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      15715  2007-02-26 17:49  21_uCOSII\AVR_PQ1A.h

     文件       6334  2007-02-26 19:30  21_uCOSII\funcs.c

     文件        403  2007-03-04 11:29  21_uCOSII\funcs.dp2

     文件      37160  2007-03-04 11:29  21_uCOSII\funcs.lis

     文件       8901  2007-03-04 11:29  21_uCOSII\funcs.o

     文件      17084  2007-03-04 11:29  21_uCOSII\funcs.s

     文件        473  2007-02-26 08:22  21_uCOSII\includes.h

     文件       1281  2007-02-26 08:23  21_uCOSII\os_cfg.h

     文件      17859  2004-01-05 23:14  21_uCOSII\OS_CORE.C

     文件        302  2007-03-04 11:29  21_uCOSII\OS_CORE.dp2

     文件      67174  2007-03-04 11:29  21_uCOSII\OS_CORE.lis

     文件      16439  2007-03-04 11:29  21_uCOSII\OS_CORE.o

     文件      35682  2007-03-04 11:29  21_uCOSII\OS_CORE.s

     文件       3923  2007-02-26 17:47  21_uCOSII\os_cpu.h

     文件          0  2007-03-04 11:29  21_uCOSII\os_cpu_a.dp2

     文件      27167  2007-03-04 11:29  21_uCOSII\os_cpu_a.lis

     文件       7034  2007-03-04 11:29  21_uCOSII\os_cpu_a.o

     文件      10311  2007-02-26 14:02  21_uCOSII\os_cpu_a.s

     文件       5709  2006-12-01 13:24  21_uCOSII\os_task.c

     文件        302  2007-03-04 11:29  21_uCOSII\os_task.dp2

     文件      25948  2007-03-04 11:29  21_uCOSII\os_task.lis

     文件       5528  2007-03-04 11:29  21_uCOSII\os_task.o

     文件      12764  2007-03-04 11:29  21_uCOSII\os_task.s

     文件       1579  2006-11-12 17:22  21_uCOSII\OS_TIME.C

     文件        302  2007-03-04 11:29  21_uCOSII\OS_TIME.dp2

     文件       5091  2007-03-04 11:29  21_uCOSII\OS_TIME.lis

     文件       1308  2007-03-04 11:29  21_uCOSII\OS_TIME.o

     文件       2797  2007-03-04 11:29  21_uCOSII\OS_TIME.s

     文件        376  2007-02-27 10:04  21_uCOSII\prototype.h

     文件        670  2007-02-26 07:58  21_uCOSII\readme.txt

............此处省略20个文件信息

评论

共有 条评论