将下面2个程序分别烧录进2个单片机中.
单片机U1
//ICC-AVR application builder : 2013-6-14 10:17:58
// Target : M16
// Crystal: 8.0000Mhz
#include #include #define LED1_ON PORTD|=(1< unsigned char table[]={0XC0,0XF9,0XA4,0xB0,0x99,0x92,0x82,0xF8,0X80,0X90,0X88,0X83,0XC6,0XA1,0X86,0X8e}; unsigned char count=0,count_h,count_l; unsigned char a=0,cnt,cnt1; unsigned char key,count_temp; void port_init(void) { PORTA = 0xFF; DDRA = 0x00; PORTB = 0xFF; DDRB = 0x00; PORTC = 0xFF; //m103 output only DDRC = 0xFF; PORTD = 0xFF; DDRD = 0x32; } //TIMER0 initialize - prescale:256 // WGM: Normal // desired value: 0.005Sec // actual value: 0.005Sec (0.2%) void timer0_init(void) { TCCR0 = 0x00; //stop TCNT0 = 0x64; //set count OCR0 = 0x9C; //set compare TCCR0 = 0x04; //start timer } #pragma interrupt_handler timer0_ovf_isr:iv_TIM0_OVF void timer0_ovf_isr(void) { a++; TCNT0 = 0x64; //reload counter value } //UART0 initialize // desired baud rate: 9600 // actual: baud rate:9615 (0.2%) void uart0_init(void) { UCSRB = 0x00; //disable while setting baud rate UCSRA = 0x00; UCSRC = BIT(URSEL) | 0x06; UBRRL = 0x33; //set baud rate lo UBRRH = 0x00; //set baud rate hi UCSRB = 0x98; } #pragma interrupt_handler uart0_rx_isr:iv_USART0_RXC void uart0_rx_isr(void) { //uart has received a character in UDR unsigned char udr0; udr0=UDR; count_temp=udr0; } //call this routine to initialize all peripherals void init_devices(void) { //stop errant interrupts until set up CLI(); //disable all interrupts port_init(); timer0_init(); uart0_init(); MCUCR = 0x00; GICR = 0x00; TIMSK = 0x01; //timer interrupt sources SEI(); //re-enable interrupts //all peripherals are now initialized } //发送数据uart0_TX //函数功能:把要发送的数据data送到发送数据缓存器UDR中,然后发送出去 void uart0_TX(unsigned char data) { while(!(UCSRA&(1< } //8M晶振频率下的延时一毫秒 void delay(unsigned int k) { unsigned int m,n; for(m=0;m for(n=0;n<1140;n++) {;} } } //数码管显示函数 void display(void) { count_h=count/10; count_l=count%10; PORTC=table[count_h]; LED1_ON; delay(1);//这个延时很重要,不加的话CUP运行过快将会导致LED数码管无法显示; LED1_OFF; PORTC=table[count_l]; LED2_ON; delay(1); LED2_OFF; } //主函数 void main(void) { init_devices(); while(1) { key=PINB; uart0_TX(key); display(); switch(count_temp) { case 1: TIMSK = 0x01;break; case 2: TIMSK = 0x00;break; case 3: count=0X00;TIMSK = 0x01;break; } if(a==150) { a=0; if(count==59) { count=0; } else { count++; } } } } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 单片机U2 //ICC-AVR application builder : 2013-6-14 10:31:18 // Target : M16 // Crystal: 8.0000Mhz #include #include unsigned char led_dis; unsigned char count_temp,cnt1,cnt=1; void port_init(void) { PORTA = 0x00; DDRA = 0x00; PORTB = 0xFF; DDRB = 0xFF; PORTC = 0x00; //m103 output only DDRC = 0x00; PORTD = 0xFF; DDRD = 0x02; } //UART0 initialize // desired baud rate: 9600 // actual: baud rate:9615 (0.2%) void uart0_init(void) { UCSRB = 0x00; //disable while setting baud rate UCSRA = 0x00; UCSRC = BIT(URSEL) | 0x06; UBRRL = 0x33; //set baud rate lo UBRRH = 0x00; //set baud rate hi UCSRB = 0x98; } #pragma interrupt_handler uart0_rx_isr:iv_USART0_RXC void uart0_rx_isr(void) { //uart has received a character in UDR unsigned char udr0; udr0=UDR; led_dis=udr0; } #pragma interrupt_handler int0_isr:iv_INT0 void int0_isr(void) { //external interupt on INT0 cnt++; if(cnt==1) { count_temp=1; } else if(cnt==2) { count_temp=2; cnt=0; } } #pragma interrupt_handler int1_isr:iv_INT1 void int1_isr(void) { //external interupt on INT1 count_temp=3; } //call this routine to initialize all peripherals void init_devices(void) { //stop errant interrupts until set up CLI(); //disable all interrupts port_init(); uart0_init(); MCUCR = 0x0A; GICR = 0xC0; TIMSK = 0x00; //timer interrupt sources SEI(); //re-enable interrupts //all peripherals are now initialized } //发送数据函数 void USART_TX(unsigned char data) { while(!(UCSRA&(1< } //主函数 void main(void) { init_devices(); while(1) { cnt1=count_temp; USART_TX(cnt1); PORTB=led_dis; } }
上一篇:AVR单片机8路AD如何采样
下一篇:基于m128的LCD1602驱动(8线/4线)
推荐阅读
史海拾趣
1.Protel VS PowerPCB 曾和PADS的工程师一块工作过半个月,当时我做Protel的技术支持,我们两家下一步可能都要做Veribest的代理,所以遇到一起了。听说PADS有不少很顺手的功能,用惯了上瘾,问那个哥儿们是不是这样,人家很谦虚,说 ...… 查看全部问答∨ |
|
关于在Marvell PXA310上USB HOST PORT3 的问题 我在 310 上可以正常使用 USB HOST PORT 2 (OTG) ,但是使用 USB HOST PORT 3 时,终端输出如下信息 <6>usb 1-3: new full speed USB device using pxa27x-ohci and address 84 usb 1-3: device descriptor read/64, error -62 ...… 查看全部问答∨ |
我在usrApp中添加应用程序后总是在编译时出现 dld: warning: Undefined symbol \'IVEC_TO_INUM\' in file \'partialImage.o\' dld: Undefined symbols found - no output written 不知道是怎么回事?… 查看全部问答∨ |
现在很多芯片只能在CCSv4上支持,但是CCSv4已经和CCSv3.3是完全不同的架构,是基于eclipse架构的。所以调试界面与CCSv3.3是完全不同的。 TI有CCSv4的培训视频链接http://e2e.ti.com/cn/media/p/2090.aspx。 主要还是需要亲自调试,多使用。个人觉 ...… 查看全部问答∨ |
|
和ZigBee无线自组网相比WiMi-net无线自组网的优势 关于ZigBee技术,我们都知道ZigBee是一种技术规范,是一类产品的统称。由于ZigBee本身是一个非常庞大的体系, 不同实现厂家由于编码水平不同,对于ZigBee规范理解的不同,异常处理机制健壮程度不同,在特定的情况下其链路的智能程度也 ...… 查看全部问答∨ |
|
ZigBee协调器网络的建立 一、协调器网络的建立 1、 网络的格式化 A:初始化的能量阀值为16。通过设置ZDApp_event_loop任务中的事件ID为ZDO_NETWORK_INIT以便执行B。 ...… 查看全部问答∨ |
小弟初学单片机,菜鸟一枚,最近写了一个无线通信的程序,用的是PIC16F74,RA3作为无线信号接收脚,平时电平为2.5V左右,程序是这样的:先检测2ms的低电平,再检测高电平,然后开始解码。可是我上电以后什么信号都没发就老是直接开始解码了,测RA3 ...… 查看全部问答∨ |
设计资源 培训 开发板 精华推荐
- 最后一周:免费获取Pasternack《RF产品选型指南》2018 印刷版!
- 安森美半导体重磅推出超低功耗蓝牙芯片 RSL10 — 观视频答题送样片 更有丰富礼品等你拿!
- 【双节献礼】LM3S9B96开发套件等你来拿!!!
- 有奖直播|TI MSP430™民用超声波水表开发指南及其智能模拟组合模块在传感器检测中的应用
- 有奖直播:安森美光伏和储能产品介绍
- 有奖直播:基于TI Jacinto™ 的深度学习平台介绍
- TI 培训积分全新上线!学课程 领积分 兑礼品
- ADI有奖直播:储能系统助力电动汽车快充站的建设 8月31日上午10:00-11:30 为您揭晓!
- TI带你一起解剖共享单车智能锁!看视频涨知识赢好礼喽!