源:http://blog.163.com/zhaojun_xf/blog/static/30050580200951023046891

来自:

作者:龙图开发网

文章来源:龙图开发网

时间:2009-5-18 10:15:01

//LED调光-DMX512灯光协义接收控制
//龙图开发网 http://www.longtoo.com 原创,转载请注明出处
//ICC-AVR application builder : 2007/12/14
// Target : M8
// Crystal: 8.000Mhz #include <iom8v.h>
#include <macros.h> #define uint unsigned int //16 bit
#define uchar unsigned char //8 bit
#define bit char // 1 bit
#define ulong unsigned long //32 bit #define FLASH_LED_PORTC PORTC
#define FLASH_LED_PORTD PORTD
#define FLASH_LED_R_ON (1<<PC1)
#define FLASH_LED_R_OFF (0<<PC1)
#define FLASH_LED_G_ON (1<<PC2)
#define FLASH_LED_G_OFF (0<<PC2)
#define FLASH_LED_B_ON (1<<PC0)
#define FLASH_LED_B_OFF (0<<PC0)
#define DMX_control_receive (0<<PD2)
#define DMX_control_send (1<<PD2) int JS_01;
int JS_001=,JS_002=,JS_003=;
int CUR_BYTE_A=,IADDRESS_A=;
char JS_1=,JS_2=,JS_3=,JS_4=,JS_5=,JS_6=;
// RED GREEN BLUE RGB
char DMX_DATA_1=,DMX_DATA_2=,DMX_DATA_3=,DMX_DATA_4=; char LED_TRANSFER_DATA[]=
{
,,,,,,
,,,,,,,,,,
,,,,,,,,,,
,,,,,,,,,,
,,,,,,,,,,
,,,,,,,,,,
,,,,,,,,,,
,,,,,,,,,,
,,,,,,,,,,
,,,,,,,,,,
,,,,,,,,,,
,,,,,,,,,,
,,,,,,,,,,
,,,,,,,,,,
,,,,,,,,,,
,,,,,,,,,,
,,,,,,,,,,
,,,,,,,,,,
,,,,,,,,,,
,,,,,,,,,,
,,,,,,,,,,
,,,,,,,,,,
,,,,,,,,,,
,,,,,,,,,,
,,,,,,,,,,
,,,,,,,,,
}; //------------------------------------------------
void port_init(void)
{
PORTB = 0xFF;
DDRB = 0x00;
PORTC = 0xFF; //m103 output only
DDRC = 0xFF;
PORTD = 0xFF;
DDRD = 0xFF;
} //TIMER0 initialisation - prescale:64
// WGM: Normal
// desired value: 1mSec
// actual value: 1.000mSec (0.0%)
void timer0_init(void)
{
TCCR0 = 0x00; //stop
TCNT0 = 0x83; //set count
TCCR0 = 0x03; //start timer
} #pragma interrupt_handler timer0_ovf_isr:10
void timer0_ovf_isr(void)
{
TCNT0 = 0x83; //reload counter value
} //TIMER1 initialisation - prescale:8
// WGM: 0) Normal, TOP=0xFFFF
// desired value: 100uSec
// actual value: 100.000uSec (0.0%)
void timer1_init(void)
{
TCCR1B = 0x00; //stop
TCNT1H = 0xFF; //setup
TCNT1L = 0x9C;
OCR1AH = 0x00;
OCR1AL = 0x64;
OCR1BH = 0x00;
OCR1BL = 0x64;
ICR1H = 0x00;
ICR1L = 0x64;
TCCR1A = 0x00;
TCCR1B = 0x02; //start Timer
} #pragma interrupt_handler timer1_ovf_isr:9
void timer1_ovf_isr(void)
{
//TIMER1 has overflowed
TCNT1H = 0xFF; //reload counter high value
TCNT1L = 0x9C; //reload counter low value
LED_RGB();
} //UART0 initialisation
// desired baud rate: 250000
// actual: baud rate:250000 (0.0%)
// char size: 8 bit
// parity: Disabled
void uart0_init(void)
{
UCSRB = 0x00; // RXEN //disable while setting baud rate
UCSRA = 0x02; // RXC=0-- RXC TXC UDRE FE DOR PE U2X MPCM
UCSRB = 0xFC; // 0XDF -- RXCIE TXCIE UDRIE RXEN TXEN UCSZ2 RXB8 TXB8
UCSRC = 0x06; // 9 bit-- URSEL UMSEL UPM1 UPM0 USBS UCSZ1 UCSZ0 UCPOL
UBRRH = 0x00; // set baud rate hi
UCSRC = 0x8E; // 9 bit 86
UBRRL = 0x03; //set baud rate lo ( 0x01 u2x=0)
} #pragma interrupt_handler uart0_rx_isr:12
void uart0_rx_isr(void)
{
DMX_RECEIVE(); //uart has received a character in UDR
} #pragma interrupt_handler uart0_udre_isr:13
void uart0_udre_isr(void)
{
//character transferred to shift register so UDR is now empty
//FLASH_LED_PORTD=DMX_control_receive; //DMX_control_receive; //pd2=0 PD2
} #pragma interrupt_handler uart0_tx_isr:14
void uart0_tx_isr(void)
{
//character has been transmitted
} //call this routine to initialise all peripherals
void init_devices(void)
{
//stop errant interrupts until set up
CLI(); //disable all interrupts
port_init();
timer0_init();
timer1_init();
uart0_init();
MCUCR = 0x00;
GICR = 0x00;
TIMSK = 0x05; //timer interrupt sources
SEI(); //re-enable interrupts
//all peripherals are now initialised
} void LED_FLASH()
{
++JS_01;
if (JS_01==)
{
//FLASH_LED_PORTC^=FLASH_LED_R_OFF;
//FLASH_LED_PORTC^=FLASH_LED_G_OFF;
//FLASH_LED_PORTC^=FLASH_LED_B_OFF;
}
if (JS_01==)
{
JS_01&=;
}
} void LED_RGB() //100us
{
//FLASH_LED_PORTC=FLASH_LED_R_ON|FLASH_LED_R_ON|FLASH_LED_R_ON;
++JS_1;++JS_2;++JS_3;
if (JS_1==)
{JS_1=;FLASH_LED_PORTC=FLASH_LED_R_OFF|FLASH_LED_G_OFF|FLASH_LED_B_OFF;} //ALL==0
if (JS_1==LED_TRANSFER_DATA[DMX_DATA_1]) {FLASH_LED_PORTC|=0x02;}//FLASH_LED_R_ON;} // on==1
if (JS_1==LED_TRANSFER_DATA[DMX_DATA_2]) {FLASH_LED_PORTC|=0x04;}//FLASH_LED_G_ON;}
if (JS_1==LED_TRANSFER_DATA[DMX_DATA_3]) {FLASH_LED_PORTC|=0x01;}//FLASH_LED_B_ON;}
if (JS_1==LED_TRANSFER_DATA[DMX_DATA_4])
{FLASH_LED_PORTC|=0x02;FLASH_LED_PORTC|=0x04;FLASH_LED_PORTC|=0x01; }//RGB
} //*****************************************
void DMX_RECEIVE()
{
unsigned char status, resh, resl;
char DMX_ADDRESS_PAN,CODE_Data,DMX_DATA_PAN; while ( !(UCSRA & (<<RXC)) ); // NO USE
// from buffer
status = UCSRA;
resh = UCSRB;
resl = UDR;
resh = (resh >> ) & 0x01; // TAKE RXB8
if (resh==) //(1<<RXB8))
{ //LED_DISPLAY_V4=15; //test ok
DMX_DATA_PAN=;
if (CUR_BYTE_A==IADDRESS_A+) DMX_DATA_1=resl;
if (CUR_BYTE_A==IADDRESS_A+) DMX_DATA_2=resl;
if (CUR_BYTE_A==IADDRESS_A+) DMX_DATA_3=resl;
if (CUR_BYTE_A==IADDRESS_A+) DMX_DATA_4=resl;
if (DMX_ADDRESS_PAN==)
++CUR_BYTE_A; //DMX address count register
if (CUR_BYTE_A==) CUR_BYTE_A&=;
}
else //(0<<RXB8)
{
CODE_Data=resl;
if (CODE_Data==)
{ //test ok
CUR_BYTE_A = ;
CODE_Data = 0xff;
DMX_ADDRESS_PAN=;
}
else
DMX_ADDRESS_PAN=;
}
// DMX_PORTD|=DMX_control_send; //pd6=1
} void main(void)
{
init_devices();
FLASH_LED_PORTD=DMX_control_receive; //DMX_control_receive; //pd2=0 PD2
//insert your functional code here...
}

《LED调光-DMX512灯光协义接收控制》转的更多相关文章

  1. 转《在浏览器中使用tensorflow.js进行人脸识别的JavaScript API》

    作者 | Vincent Mühle 编译 | 姗姗 出品 | 人工智能头条(公众号ID:AI_Thinker) [导读]随着深度学习方法的应用,浏览器调用人脸识别技术已经得到了更广泛的应用与提升.在 ...

  2. face-api.js:一个在浏览器中进行人脸识别的 JavaScript 接口

    Mark! 本文将为大家介绍一个建立在「tensorflow.js」内核上的 javascript API——「face-api.js」,它实现了三种卷积神经网络架构,用于完成人脸检测.识别和特征点检 ...

  3. TensorFlow.js之安装与核心概念

    TensorFlow.js是通过WebGL加速.基于浏览器的机器学习js框架.通过tensorflow.js,我们可以在浏览器中开发机器学习.运行现有的模型或者重新训练现有的模型. 一.安装     ...

  4. 在Java中直接调用js代码(转载)

    http://blog.csdn.net/xzyxuanyuan/article/details/8062887 JDK1.6版添加了新的ScriptEngine类,允许用户直接执行js代码. 在Ja ...

  5. 第十一章:WEB浏览器中的javascript

    客户端javascript涵盖在本系列的第二部分第10章,主要讲解javascript是如何在web浏览器中实现的,这些章节介绍了大量的脚本宿主对象,这些对象可以表示浏览器窗口.文档树的内容.这些章节 ...

  6. 在Java中直接调用js代码

    JDK1.6版添加了新的ScriptEngine类,允许用户直接执行js代码. 在Java中直接调用js代码 不能调用浏览器中定义的js函数,会抛出异常提示ReferenceError: “alert ...

  7. TensorFlow.js入门(一)一维向量的学习

    TensorFlow的介绍   TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理.Tensor(张量)意味着N维数组,Flow(流)意味着 ...

  8. JavaScript权威指南--WEB浏览器中的javascript

    知识要点 1.客户端javascript window对象是所有客户端javascript特性和API的主要接入点.它表示web浏览器的一个窗口或窗体,并且可以用window表示来引用它.window ...

  9. 解决webkit浏览器中js方法中使用window.event提示未定义的问题

    这实际上是一个浏览器兼容性问题,根源百度中一大堆,简要说就是ie中event对象是全局变量,所以哪里都能使用到,但是webkit内核的浏览器中却不存在这个全局变量event,而是以一个隐式的局部变量的 ...

  10. JS Date当前时间:获取日期时间方法在各浏览器中的差异

    转自:http://www.feiesoft.com/00047/<script type="text/javascript"> // JS Date当前时间获取方法在 ...

随机推荐

  1. C++ 隐式类类型转换和转换操作符

    隐式类类型转换 C++语言定义了内置类型之间的几个自动转换.也可以定义如何将其他类型的对象隐式转换为我们的类类型,或将我们的类类型的对象隐式转换为其他类型.为了定义到类类型的隐式转换,需要定义合适的构 ...

  2. 您可能无法使用服务器管理器,如果两个线程同时访问 IIS 管理 IIS 的修补程序

    http://support.microsoft.com/kb/946517 如果多线程操作 win2003 iis 失败, 打上这个补丁就好了

  3. 使用monit搭建一个监控系统

    上周用monit搭建或者说定制了一个监控系统,来监控服务器发生事情.当然了主要是监控异常,因为我们的产品属于服务器类型,很多进程都daemon,要不停的运行.我们搭建监控目的不过是出现问题能够及时的知 ...

  4. 十一章:用CSS进行布局

    本章重点:盒模型与元素浮动. 盒模型: 1.CSS处理网页时,它认为每个元素都包含在一个不可见的盒子里.这就是众所周知的盒模型,这里的盒子由内容区域.内容区域周围的空间.内边距和外边缘和边框外面将元素 ...

  5. 依赖注入容器Autofac与MVC集成

    Autofac是应用于.Net平台的依赖注入(DI,Dependency Injection)容器,具有贴近.契合C#语言的特点.随着应用系统的日益庞大与复杂,使用Autofac容器来管理组件之间的关 ...

  6. hdu 1166 敌兵布阵(线段树详解)

    Problem Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任 ...

  7. android 瀑布流效果(仿蘑菇街)

    我们还是来看一款示例:(蘑菇街)           看起来很像我们的gridview吧,不过又不像,因为item大小不固定的,看起来是不是别有一番风味,确实如此.就如我们的方角图形,斯通见惯后也就出 ...

  8. Heartbeat+DRBD+MySQL高可用方案【转】

    转自Heartbeat+DRBD+MySQL高可用方案 - yayun - 博客园 http://www.cnblogs.com/gomysql/p/3674030.html 1.方案简介 本方案采用 ...

  9. sqlserver 批量修改表前缀

    先把第一句话放到sqlserver查询器中执行一下.然后把查询结果复制出来,进行编辑...一看你就懂了..简单的sql语句拼装 select ' exec sp_rename "' + na ...

  10. wl18xx编译的时候出现WARNING: "simple_open" WARNING: "wl12xx_get_platform_data"

     ................................................................................................... ...