⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 led._c

📁 单片机 控制 共阴led显示 C语言编写 源程序。
💻 _C
字号:
//******************************************************************************
//                                                                             *
//    FileName   : led.c           ICCAVR V6.31A编译                           *
//    Function   : 8个LED灯闪烁显示,入门级试验                                *
//    Date       : 2006-12-11                                                  *
//    Version    : 1.0                                                         *
//                                                                             *
//    Author     : 开关电源              hongtusy@163.com                      *
//    Company    : 电子信息技术咨询网    http://www.itsn.cn                    *
//                                                                             *
//***************************描述与记事*****************************************
//实验板的AVR程序,C或AVR入门级试验,8个LED灯闪烁显示。
//说明:使用延迟程序,间歇点亮或关闭LED灯。
//具体电路可参照使用指南里的说明。PC口输出1,LED即点亮。
//使用器件:ATMEGA8535,可更换。          使用默认的片内RC振荡器,1MHz。
//使用的开关:SW1-1~8.SW6-1打开,SW3-8为系统复位端。
//记事:
//******************************************************************************
#include <iom8535v.h>             //头文件,ATmega8535单片机的寄存器定义
#include "macros.h"               //可以使用NOP()以及SEI()等指令.

typedef unsigned char  uchar;    //宏
typedef unsigned int   uint;

/************************************************
函 数 名:    DelaymS()
功    能:    毫秒级延时函数
输入参数:     延迟时间/系统晶体
输出参数:    做相应的延迟处理
描    述:    /
***********************************************/
void DelaymS (uint i)            //延时函数,参数i为延时时间
{
    uint j,k;               //双重延时
	for (j=0;j<i;j++)
	{
	    for (k=0;k<=50;k++);
	}
}
//************************main***************
void main(void)                       //主程序
{
	DDRC=0xff;                    //PC口为输出
	while(1)                      //如果条件为真,1=真,所以死循环执行嵌套部分。
	{
	    PORTC=0xff;               //点亮LED
		Delay4740uS ();            //延迟程序
		PORTC=0x00;               //关闭LED
		Delay4740uS ();            //延迟程序
	}
}
#if 0
/************************************************
函 数 名:    Delay882uS()
功    能:    882微秒级延时函数
输入参数:     
输出参数:    
描    述:    精确延迟函数
***********************************************/
void Delay882uS (uchar i) 
{
   uchar j;
   for (j=0;j<i;j++)
   {
   asm("del:    ldi    r16,0xFF  ")
   asm("loop1:  dec    r16       ")
   asm("        nop              ")
   asm("        nop              ")
   asm("        brne   loop1     ")
   asm("        nop              ");
   }
}
/************************************************
函 数 名:    Delay4740uS()
功    能:    4740微秒级延时函数
输入参数:     晶振1M,机器周期为1uS。
输出参数:    延迟时间T=a(4b+3)+c
描    述:    在C中调汇编函数,使用r24,r25不必作特殊的保护工作。    
***********************************************/
void Delay4740uS (void) 
{
   asm("        ldi    r24,110  ")   //t=1 参数:a
   asm("loop1:  ldi    r25,10   ")   //t=1 参数:b
   asm("loop2:  dec    r25      ")   //t=1
   asm("        nop             ")   //t=1,校准用,需改动公式。
   asm("        brne   loop2    ")   //t=2/1
   asm("        dec    r24      ")   //t=1
   asm("        brne   loop1    ")   //t=2/1
   asm("nop\n nop\n nop\n nop\n nop\n nop\n nop\n nop\n nop\n nop"); //t=1,校准用,参数:c
}
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -