untitled

Similar documents
C语言的应用.PDF

从MCS51向AVR的快速转换.PDF

目录

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit

新・明解C言語入門編『索引』

SH79F161B I/O 1. SH79F161B SH79F161B IO 30 I/O I/O 4 I/O SH79F161B 30 I/O Px I/O PxCRy I/O PxPCRy x = 0-3 y = IO PxCRy IO x=0-3 y=0-7

C PICC C++ C++ C C #include<pic.h> C static volatile unsigned char 0x01; static volatile unsigned char 0x02; static volatile unsigned cha

<4D F736F F D20D4D3D6BECEC4B8E5C4A3B0E52E646F63>

2 12

FY.DOC

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

JTAG ICE PC JTAG ICE JTAG ISP... 5 IDE AVR STUDIO JTAGICE JTAGICE... 12

bingdian001.com

51 C 51 isp 10 C PCB C C C C KEIL

JLX

PIC16F F MPLAB 08 16F LED 15 LED

CC213

+00DE _01EN.book

Microsoft Word - 实用案例.doc

untitled

C 1


nooog

ATMEL AT90S8515 AVR CPU AVR AVR AVR ATMEL RISC 32 8 r0 r X Y Z R0 R1 R2 R13 R14 R15 R16 R17 R26 R27 R28 R29 R30 R31 0x00 0x

2.5 idlocs PIC idloc idloc 0x1234 ; 0x config idloc HEX errorlevel errorlevel Error (Warning) Message HEX 3-14 errorlevel

untitled

tiny15.PDF

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

外围器件-new.cdr

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

( RMB100,000)

三 管脚描述序号 名称 功能描述 1 PD6 I/0 2 PD7 I/0 3 PC0 I/0 4 PC1 I/0 5 PC2 I/0 6 PC3 I/0 7 PB1 I/0 8 AUDIO 音频输出, 接功放 9 PWM- 接 0.5W/8 欧喇叭 10 PWM-M 接 0.5W/8 欧喇叭 11

C/C++语言 - 分支结构

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf ("%d", & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf ("%d %d

海 南 冯 琳 峰 海 南 省 锅 炉 压 力 容 器 与 特 种 设 备 检 验 所 海 南 省 定 安 县 白 蒙 路 47 号 信 XC 内 蒙 古 冯 磊 赤 峰 市 特 种 设 备 检 验 所 内 蒙 古 赤 峰 市 红 山 区 八 里 铺 油 库 路

目 录

华恒家庭网关方案

<4D F736F F F696E74202D20B4C5D0FCB8A1CAB5D1E9D7EED6D5D1DDCABEA3A8CDF5C6F0A3A9205BBCE6C8DDC4A3CABD5D>

新版 明解C++入門編

2005.book

馬偕醫學院 學生事務工作簡報

Microsoft Word - MSP430 Launchpad 指导书.docx

<4D F736F F D20C7B6C8EBCABDCAB5D1E9CAD2B7BDB0B82E646F63>

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.07.doc

概述

( CIP) /. :, ( ) ISBN TP CIP ( 2005) : : : : * : : 174 ( A ) : : ( 023) : ( 023)

学习MSP430单片机推荐参考书

2 Keil µ vision 2.1 1) Keil µ vision2 V2.34 µ vision3 2) Sino_Keil.exe Keil c:\keil\ 3) JET51 USB PC C:\Keil\ USB PC 4) S-L

《计算机应用基础》学习材料(讲义)

ATmega8

【主持人】:给大家介绍一下,这次的培训是我们画刊部的第三次培训,当然今天特别有幸请来著吊的摄影家李少白老师给我们讲课


表 决, 审 议 程 序 符 合 有 关 法 律 法 规 和 本 公 司 章 程 的 规 定 3 本 议 案 尚 需 提 交 股 东 大 会 审 议, 与 该 等 交 易 有 利 害 关 系 的 关 联 股 东 将 放 弃 在 股 东 大 会 上 对 相 关 议 案 的 投 票 权 ( 二 ) 公

<4D F736F F D20B9F0D5FEB0ECB7A2A3A A3A93532BAC52E646F63>

103_02.xls

<313032A655A874B2D5B3CCA743BFFDA8FABCD0B7C7AAED2E786C73>

柳州历史上的今天内文改版式.FIT)

生 產 準 備 您 接 近 生 產 之 注 意 事 項 : 備 妥 住 院 用 物, 勿 遠 行 ( 生 產 用 物 包 ) 最 好 有 人 在 家 陪 伴, 或 和 陪 產 者 保 持 連 繫, 有 任 何 狀 況 可 立 即 趕 到 可 做 家 事 散 步 蹲 下 等 運 動, 以 不 太 累

省十二届人大常委会

Q8. 公 營 事 業 機 構 之 公 務 員 兼 具 勞 工 身 分 者, 於 97 年 3 月 19 日 以 前, 原 選 擇 參 加 勞 保, 調 任 其 他 公 營 事 業 機 構 時, 應 改 參 加 公 保 所 謂 調 任 其 他 公 營 事 業 機 構 之 判 別 依 據 ( 或 標

学生工作部处2010年工作总结

決議、附帶決議及注意事項

天人炁功行入與感應經驗分享

穨邱秀玲綜合展望報告.PDF

untitled

YYW1.nps

31.17 世 纪 未, 英 国 一 刊 物 针 对 某 政 治 事 件 评 论 时 说 : 君 主 主 权 原 先 是 上 帝 赐 予 的, 现 在 则 被 认 为 是 人 民 授 予 的 此 评 论 主 要 针 对 的 是 A. 光 荣 革 命 推 翻 了 君 主 统 治 制 度 B. 责 任

e bug 0 x=0 y=5/x 0 Return 4 2

Microsoft Word - 完全手冊-課程.doc

勞動條件檢查執行重點(雲林)_ [相容模式]

醋 水 法 在 水 盆 內 放 入 約 七 分 滿 的 水 與 1/2 到 1 小 杯 的 醋 量, 將 髒 襪 子 浸 泡 一 晚, 隔 天 再 丟 入 洗 衣 機, 就 能 洗 得 相 當 乾 淨 醋 有 殺 菌 除 臭 和 漂 白 功 效, 使 用 過 的 醋 水, 還 可 清 理 地 板,

穨 PDF

第一冊 第四章 分裂與再統一 班級 座號 姓吊

1-1 SH79F6431 A. 2( ) 9~15V ( 12V) U2 U3 3.3V SH79F B. 1(VCC/GND) SH79F6431 C. VDDIO SH79F6431 P4 P5 P0.6 P0.7 VDDIO VDDIO=5V D. 2 V 1.0

<4D F736F F D D342D3231D2C7B1EDCCD6C2DBB8E5B1E0D6C6CBB5C3F72E646F63>

《捕捉儿童敏感期》

2 國 文 考 科 試 題 解 析 命 題 出 處 與 南 一 版 第 五 冊 第 二 課 幽 夢 影 選 課 程 內 涵 同 試 題 解 析 某 君 講 信 用, 重 然 諾, 行 事 穩 健, 工 作 負 責 較 符 合 謹 飭 友 謹 飭 友 指 的 是 言 行 謹 慎 而 有 節 制 的 朋

untitled

29 碳 酸 钙 D3 片 ( 别 名 维 生 素 D3 碳 酸 钙 ) 吉 林 省 第 一 批 低 价 药 30 炔 诺 酮 滴 丸 吉 林 省 第 一 批 低 价 药 31 去 氯 羟 嗪 片 吉 林 省 第 一 批 低 价 药 32 茶 苯 海 明 片 吉 林 省 第 一 批 低 价 药 33

untitled

穨飲食與養老_決定版_.PDF

untitled

Microsoft Word - 正文.doc

江 西 : 失 信 被 执 行 人 曝 光 台 写 入 两 会 报 告 摘 要 1 月 27 日, 江 西 省 十 二 届 人 大 五 次 会 议 举 行 第 二 次 全 体 会 议, 江 西 省 高 级 人 民 法 院 院 长 张 忠 厚 向 大 会 作 江 西 省 高 级 人 民 法 院 工 作

形 式 审 查 不 通 过, 将 说 明 原 因 并 予 退 回, 不 予 重 新 修 改 提 交 ( 形 式 审 查 常 见 主 要 问 题 参 考 附 件 3) ( 三 ) 申 请 人 下 载 打 印 网 上 状 态 为 请 交 纸 质 材 料 至 窗 口 受 理 的 申 报 书, 报 送 项

撤 离 你 听 到 了 吗? 它 们 已 经 进 了 墙 里 边 了 那 些 金 属 的 撞 击 声 在 狂 风 之 中 很 难 听 清, 但 断 然 不 会 有 错 围 坐 在 桌 边 的 四 人 靠 得 更 紧 了 些, 并 不 是 因 为 害 怕, 而 是 为 了 取 暖 你 们 觉 得 呢?

_汪_文前新ok[3.1].doc

水资源管理(十七)

(精校版)陕西省语文卷文档版(含答案)-2011年普通高等学校招生统一考试.doc

Microsoft Word 箕æ−¥ï¼‹å®ı稿;

98年度即測即評學科測試與即測即評即發證技術士技能檢定簡章

MCCB EMI EMI

<4D F736F F D20B9F9B0EABBCDBBAFAB48DEB3B4C1A5BDB3F8A7692E646F63>

an153f

Microsoft Word - 01.DOC

SMART 7P 0 HR7P OTPMCU A/D I/O OTP ROM RAM HR7P HR7P HR7PPMB MSOP0 7+input HR7PPSC HR7PPSD SOP SOP6 +input input HR7PERB SSOP0 7

chap07.key

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++;

Transcription:

www.mcudriver.cn 1.1 / 1) WinAVR20070525 2) Source Insight 3) ISP 4) PonyProg ISP 5) USB 6) 1.2. MCU ATMEGA16 1.3. AVR8 1.4 LED0~LED7 1 1.5 #include <avr/io.h> // Program 1.1 LED.C #define uchar unsigned char // uchar unsigned char #define uint unsigned int // uint unsigned int port_init IO IO void port_init(void) PORTA = 0xFF; DDRA = 0xFF; www.mcudriver.cn AVR 51 Freescale8 1 1-wire I2C SPI

www.mcudriver.cn PORTB = 0xFF; DDRB = 0xFF; PORTC = 0xFF; DDRC = 0xFF; PORTD = 0xFF; DDRD = 0xFF; delay t t 0~255 void delay(uchar t) uchar i; uint j; for(i=0;i<t;i++) for(j=0;j<60000;j++) // 5ms asm("nop"); main void main(void)// port_init(); while(1) delay(200); // 1s PORTC = 0xff; //8 LED delay(200); // 1s PORTC = 0x0; //8 LED 1.6 C HEX AVR www.mcudriver.cn AVR 51 Freescale8 2 1-wire I2C SPI

www.mcudriver.cn 2.1 / 1) WinAVR20070525 2) Source Insight 3) ISP 4) PonyProg ISP 5) USB 6) 2.2 MCU ATMEGA16 2 2.3 AVR8 2.4 KEY1~KEY4 LED 1) KEY1 LED0 7 LED 2) KEY2 LED1 7 LED 3) KEY3 LED2 7 LED 4) KEY4 LED3 7 LED 5) 8 LED 2.5 Program 2.1 POLL_BUZZER.C #include <avr/io.h> // #define uchar unsigned char // uchar unsigned char #define uint unsigned int // uint unsigned int #define LED0_On (PORTC&=~(1<<PC0)) // PC^0=0 LED0 #define LED1_On (PORTC&=~(1<<PC1)) // PC^1=0 LED1 #define LED2_On (PORTC&=~(1<<PC2)) // PC^2=0 LED2 www.mcudriver.cn AVR 51 Freescale8 3 1-wire I2C SPI

www.mcudriver.cn #define LED3_On (PORTC&=~(1<<PC3)) // PC^3=0 LED3 port_init IO IO void port_init(void) PORTA = 0xFF; DDRA = 0xFF; PORTB = 0xFF; DDRB = 0xFF; PORTC = 0xFF; DDRC = 0xFF; PORTD = 0xFF; DDRD = 0xFF; delay t t 0~255 void delay(uchar t) uchar i; uint j; for(i=0;i<t;i++) for(j=0;j<60000;j++) // 5ms asm("nop"); key_exe keynum void key_exe(uchar keynum) if(keynum ==0xE0) LED0_On; //key1 LED0 else if(keynum ==0xD0) LED1_On; //key2 LED1 else if(keynum ==0xB0) LED2_On; //key3 LED2 else if(keynum ==0x70) LED3_On; //key4 LED3 www.mcudriver.cn AVR 51 Freescale8 4 1-wire I2C SPI

www.mcudriver.cn else PORTC=0xff; // LED main void main(void)// uchar temp_pd,temp0,temp1; uchar n; // n port_init(); // IO DDRD=~((1<<PD7) (1<<PD6) (1<<PD5) (1<<PD4)); while(1) // temp_pd=pind; // IO temp0=temp_pd&0xf0;// if(temp0!=0xf0) // 0xf0 // delay(6);// 30ms temp_pd=pind; temp1=temp_pd&0xf0; // if(temp0==temp1) // key_exe(temp1); // key_exe 2.6 C HEX AVR 3.1 / 1) WinAVR20070525 2) Source Insight 3) ISP www.mcudriver.cn AVR 51 Freescale8 5 1-wire I2C SPI

www.mcudriver.cn 4) PonyProg ISP 5) USB 6) 3.2 MCU ATMEGA16 1 3.3 AVR8 3.4 3 1 3.5 #include <avr/io.h> // Program 3.1 BUZZER.C #define uchar unsigned char // uchar unsigned char #define uint unsigned int // uint unsigned int #define Buzzer_On (PORTD =(1<<PD7)) // PD^7=0 #define Buzzer_Off (PORTD&=~(1<<PD7)) // PD^7=1 port_init IO IO void port_init(void) PORTA = 0xFF; DDRA = 0xFF; PORTB = 0xFF; DDRB = 0xFF; PORTC = 0xFF; DDRC = 0xFF; PORTD = 0xFF; DDRD = 0xFF; www.mcudriver.cn AVR 51 Freescale8 6 1-wire I2C SPI

www.mcudriver.cn delay t t 0~255 void delay(uchar t) uchar i; uint j; for(i=0;i<t;i++) for(j=0;j<60000;j++) // 5ms asm("nop"); main void main(void)// uchar n; // n port_init(); Buzzer_Off;// for(n=0;n<3;n++) // 3 Buzzer_On; delay(200); // 1s Buzzer_Off; delay(200); // 1s while(1);// 3.6 C HEX AVR www.mcudriver.cn AVR 51 Freescale8 7 1-wire I2C SPI

www.mcudriver.cn 4.1 / 1) WinAVR20070525 2) Source Insight 3) ISP 4) PonyProg ISP 5) USB 6) 4.2 MCU ATMEGA16 1 2 4.3 AVR8 4.4 KEY1~KEY4 LED 1) KEY1 LED0 7 LED 2) KEY2 LED1 7 LED 3) KEY3 LED2 7 LED 4) KEY4 LED3 7 LED 5) 8 LED 4.5 Program 4.1 INT_BUZZER.C #include <avr/io.h> // #include <avr/signal.h> #include <avr/interrupt.h> #define uchar unsigned char // uchar unsigned char #define uint unsigned int // uint unsigned int www.mcudriver.cn AVR 51 Freescale8 8 1-wire I2C SPI

www.mcudriver.cn #define LED0_On (PORTC&=~(1<<PC0)) // PC^0=0 LED0 #define LED1_On (PORTC&=~(1<<PC1)) // PC^1=0 LED1 #define LED2_On (PORTC&=~(1<<PC2)) // PC^2=0 LED2 #define LED3_On (PORTC&=~(1<<PC3)) // PC^3=0 LED3 port_init IO IO void port_init(void) PORTA = 0xFF; DDRA = 0xFF; PORTB = 0xFF; DDRB = 0xFF; PORTC = 0xFF; DDRC = 0xFF; PORTD = 0xFF; DDRD = 0xFF; INT_Init void INT_Init() cli(); // MCUCR = 0x02; //INT0 GICR = 0x40; // 0 sei(); // delay t t 0~255 void delay(uchar t) uchar i; uint j; for(i=0;i<t;i++) for(j=0;j<60000;j++) // 5ms asm("nop"); www.mcudriver.cn AVR 51 Freescale8 9 1-wire I2C SPI

www.mcudriver.cn key_exe keynum void key_exe(uchar keynum) if(keynum ==0xE0) LED0_On; //key1 LED0 else if(keynum ==0xD0) LED1_On; //key2 LED1 else if(keynum ==0xB0) LED2_On; //key3 LED2 else if(keynum ==0x70) LED3_On; //key4 LED3 else PORTC=0xff; // LED SIGNAL(SIG_INTERRUPT0) INT0 SIGNAL(SIG_INTERRUPT0) uchar temp_pd,temp0,temp1; temp_pd=pind; // IO temp0=temp_pd&0xf0;// if(temp0!=0xf0) // 0xf0 // delay(6);// 30ms temp_pd=pind; temp1=temp_pd&0xf0; // if(temp0==temp1) // key_exe(temp1); // key_exe main void main(void)// www.mcudriver.cn AVR 51 Freescale8 10 1-wire I2C SPI

www.mcudriver.cn port_init(); // IO DDRD=~((1<<PD7) (1<<PD6) (1<<PD5) (1<<PD4)); INT_Init(); while(1) // INT0 4.6 C HEX AVR 5.1 / 1) WinAVR20070525 2) Source Insight 3) ISP 4) PonyProg ISP 5) USB 6) 5.2 MCU ATMEGA16 1 3 5.3 AVR8 5.4 LED 1 3 5 7 2 4 6 8 5. 5 Program 5.1 TIMER0.C www.mcudriver.cn AVR 51 Freescale8 11 1-wire I2C SPI

www.mcudriver.cn #include <avr/io.h> // #include <avr/signal.h> #include <avr/interrupt.h> #define uchar unsigned char // uchar unsigned char #define uint unsigned int // uint unsigned int #define LED0_On (PORTC&=~(1<<PC0)) // PC^0=0 LED0 #define LED1_On (PORTC&=~(1<<PC1)) // PC^1=0 LED1 #define LED2_On (PORTC&=~(1<<PC2)) // PC^2=0 LED2 #define LED3_On (PORTC&=~(1<<PC3)) // PC^3=0 LED3 port_init IO IO void port_init(void) PORTA = 0xFF; DDRA = 0xFF; PORTB = 0xFF; DDRB = 0xFF; PORTC = 0xFF; DDRC = 0xFF; PORTD = 0xFF; DDRD = 0xFF; delay t t 0~255 void delay(uchar t) uchar i; uint j; for(i=0;i<t;i++) for(j=0;j<60000;j++) // 5ms asm("nop"); SIGNAL(SIG_INTERRUPT0) INT0 www.mcudriver.cn AVR 51 Freescale8 12 1-wire I2C SPI

www.mcudriver.cn SIGNAL(SIG_INTERRUPT0) uchar temp_pd,temp0,temp1; temp_pd=pind; // IO temp0=temp_pd&0xf0;// if(temp0!=0xf0) // 0xf0 // delay(6);// 30ms temp_pd=pind; temp1=temp_pd&0xf0; // if(temp0==temp1) // key_exe(temp1); // key_exe main void main(void)// port_init(); // IO DDRD=~((1<<PD7) (1<<PD6) (1<<PD5) (1<<PD4)); while(1) // INT0 5.6 C HEX AVR www.mcudriver.cn AVR 51 Freescale8 13 1-wire I2C SPI

www.mcudriver.cn 6.1 / 1) WinAVR20070525 2) Source Insight 3) ISP 4) PonyProg ISP 5) USB 6) 7) RS232 6.2 MCU ATMEGA16 4 6.3 AVR8 6.4 PC This is a RS232 Comunication Program! PC PC 6.5 Program 6.1 RS232.C #include <avr/io.h> // #define uchar unsigned char // uchar unsigned char #define uint unsigned int // uint unsigned int #define fosc 12000000 // 12MHZ #define baud 9600 // RS232 port_init IO IO www.mcudriver.cn AVR 51 Freescale8 14 1-wire I2C SPI

www.mcudriver.cn void port_init(void) PORTA = 0xFF; DDRA = 0xFF; PORTB = 0xFF; DDRB = 0xFF; PORTC = 0xFF; DDRC = 0xFF; PORTD = 0xFF; DDRD = 0xFF; uart_init UART void uart_init(void) UCSRB=(1<<RXEN) (1<<TXEN);// UBRRL=(fosc/16/(baud+1))%256; UBRRH=(fosc/16/(baud+1))/256; // 9600 UCSRC=(1<<URSEL) (1<<UCSZ1) (1<<UCSZ0);//8 +1 STOP ( ) getchar uchar getchar(void) while(!(ucsra& (1<<RXC))); return UDR; putchar void putchar(uchar c) while (!(UCSRA&(1<<UDRE))); UDR=c; www.mcudriver.cn AVR 51 Freescale8 15 1-wire I2C SPI

www.mcudriver.cn puts int puts(char *s) while (*s) putchar(*s); s++; putchar(0x0a); putchar(0x0d); // return 1; main void main(void) uchar temp; port_init(); uart_init(); puts( This is a RS232 Comunication Program! );// while(1) // temp= getchar();// PC temp putchar(temp); // PC 6.6 C HEX AVR 6.7 comdebug.exe www.mcudriver.cn AVR 51 Freescale8 16 1-wire I2C SPI

www.mcudriver.cn PC USB This is a RS232 Comunication Program! PC S PC 7.1 / 1) WinAVR20070525 2) Source Insight 3) ISP 4) PonyProg ISP 5) USB 6) 7) A/D www.mcudriver.cn AVR 51 Freescale8 17 1-wire I2C SPI

www.mcudriver.cn 7.2 MCU ATMEGA16 4 5 7.3 AVR8 7.4 PC This is a A/D Conversion Program! ADC 0 PC 7.5 Program 7.1 ADC0.C #include <avr/io.h> // #define uchar unsigned char // uchar unsigned char #define uint unsigned int // uint unsigned int #define fosc 12000000 // 12MHZ #define baud 9600 // RS232 uint adc_rel; //AD adc_rel uchar adc_mux;//ad port_init IO IO void port_init(void) PORTA = 0xFF; DDRA = 0xFF; PORTB = 0xFF; DDRB = 0xFF; PORTC = 0xFF; DDRC = 0xFF; PORTD = 0xFF; DDRD = 0xFF; uart_init UART www.mcudriver.cn AVR 51 Freescale8 18 1-wire I2C SPI

www.mcudriver.cn void uart_init(void) UCSRB=(1<<RXEN) (1<<TXEN);// UBRRL=(fosc/16/(baud+1))%256; UBRRH=(fosc/16/(baud+1))/256; // 9600 UCSRC=(1<<URSEL) (1<<UCSZ1) (1<<UCSZ0);//8 +1 STOP ( ) getchar uchar getchar(void) while(!(ucsra& (1<<RXC))); return UDR; putchar void putchar(uchar c) while (!(UCSRA&(1<<UDRE))); UDR=c; puts int puts(char *s) while (*s) putchar(*s); s++; putchar(0x0a); putchar(0x0d); // www.mcudriver.cn AVR 51 Freescale8 19 1-wire I2C SPI

www.mcudriver.cn return 1; adc_init ADC void adc_init(void) adc_mux=0;// 0 DDRC=0x00; PORTC=0x00; // PC ADC ADCSRA = 0x00; // AVCC, 0 ADMUX =(1<<REFS0) (adc_mux&0x0f); ACSR =(1<<ACD); // // 64 ADCSRA=(1<<ADEN) (1<<ADSC) (1<<ADIE) (1<<ADPS2) (1<<ADPS1) ; SIGNAL ADC SIGNAL(SIG_ADC) adc_rel=adc&0x3ff;// AD // AVCC, 0 ADMUX =(1<<REFS0) (adc_mux&0x0f);// ADCSRA =(1<<ADSC);// AD ADCtoBCD ADC temp ADC void ADCtoBCD(uint temp) unsigned char result; unsigned char num_bit[3]; temp=(unsigned int)(((unsigned long)((unsigned long)temp*vref))/0x3ff); temp2=temp; /********** ***********/ for(i=0;i<3;i++) www.mcudriver.cn AVR 51 Freescale8 20 1-wire I2C SPI

www.mcudriver.cn num_bit[2-i]=temp%10; temp=temp/10; putchar(48+num_bit[0]); putchar('.'); putchar(48+num_bit[1]); putchar(48+num_bit[2]); putchar(' '); putchar(0x0d); putchar(0x0a);// delay n void delay(uchar n) uint i; for(i=0;i<n;i++) for(j=0;j<60000;j++) asm("nop");//5ms main void main(void) cli();//close interrupt port_init(); uart_init(); adc_init(); sei();//enable interrupt puts( This is a A/D Conversion Program! );// while(1) // ADCtoBCD(adc_rel);// PC delay(200);//delay 1s 7.6 C HEX www.mcudriver.cn AVR 51 Freescale8 21 1-wire I2C SPI

www.mcudriver.cn AVR 7.7 6.7 AD ADC 8.1 / 1) WinAVR20070525 2) Source Insight 3) ISP 4) PonyProg ISP 5) USB 6) 7) PC PS/2 8) PS/2 8.2 MCU ATMEGA16 1 2 4 8.3 AVR8 8.4 PC This is a PS/2 Comunication Program! PS/2 PC 8.5 www.mcudriver.cn AVR 51 Freescale8 22 1-wire I2C SPI

www.mcudriver.cn Program 8.1 PS2.C #include <avr/io.h> // #define uchar unsigned char // uchar unsigned char #define uint unsigned int // uint unsigned int #define fosc 12000000 // 12MHZ #define baud 9600 // RS232 static unsigned char IntNum=0 ; // static unsigned char KeyV=0; // static unsigned char DisNum=0; // static unsigned char Key_UP=0,;//Key_UP static unsigned char BF=0; // unsigned char UnShifted[59][2] = //PS/2 shift 0x1C, 'a', 0x32, 'b', 0x21, 'c', 0x23, 'd', 0x24, 'e', 0x2B, 'f', 0x34, 'g', 0x33, 'h', 0x43, 'i', 0x3B, 'j', 0x42, 'k', 0x4B, 'l', 0x3A, 'm', 0x31, 'n', 0x44, 'o', 0x4D, 'p', 0x15, 'q', 0x2D, 'r', 0x1B, 's', 0x2C, 't', 0x3C, 'u', 0x2A, 'v', 0x1D, 'w', 0x22, 'x', 0x35, 'y', 0x1A, 'z', 0x45, '0', 0x16, '1', 0x1E, '2', 0x26, '3', 0x25, '4', 0x2E, '5', www.mcudriver.cn AVR 51 Freescale8 23 1-wire I2C SPI

www.mcudriver.cn 0x36, '6', 0x3D, '7', 0x3E, '8', 0x46, '9', 0x0E, '`', 0x4E, '-', 0x55, '=', 0x5D, '\\', 0x29, ' ', 0x54, '[', 0x5B, ']', 0x4C, ';', 0x52, '\'', 0x41, ',', 0x49, '.', 0x4A, '/', 0x71, '.', 0x70, '0', 0x69, '1', 0x72, '2', 0x7A, '3', 0x6B, '4', 0x73, '5', 0x74, '6', 0x6C, '7', 0x75, '8', 0x7D, '9', ; port_init IO IO void port_init(void) PORTA = 0xFF; DDRA = 0xFF; PORTB = 0xFF; DDRB = 0xFF; PORTC = 0xFF; DDRC = 0xFF; PORTD = 0xFF; DDRD = 0xFF; www.mcudriver.cn AVR 51 Freescale8 24 1-wire I2C SPI

www.mcudriver.cn uart_init UART void uart_init(void) UCSRB=(1<<RXEN) (1<<TXEN);// UBRRL=(fosc/16/(baud+1))%256; UBRRH=(fosc/16/(baud+1))/256; // 9600 UCSRC=(1<<URSEL) (1<<UCSZ1) (1<<UCSZ0);//8 +1 STOP ( ) getchar uchar getchar(void) while(!(ucsra& (1<<RXC))); return UDR; putchar void putchar(uchar c) while (!(UCSRA&(1<<UDRE))); UDR=c; puts int puts(char *s) while (*s) putchar(*s); s++; www.mcudriver.cn AVR 51 Freescale8 25 1-wire I2C SPI

www.mcudriver.cn putchar(0x0a); putchar(0x0d); // return 1; void Decode(unsigned char ScanCode) uchar No; if (!Key_UP) // switch (ScanCode) case 0xF0 : // 0xF0 Key_UP 1 Key_UP = 1; break; case 0x12 : // SHIFT Shift = 1; break; case 0x59 : // SHIFT Shift = 1; break; default: if (DisNum > 15) // 15 putchar(0x0d); putchar(0x0a); DisNum = 0; for (No = 0;(UnShifted[No][0]!=ScanCode) &&( No<59); No++); // if (UnShifted[No][0] == ScanCode) putchar(unshifted[no][1]);// PC DisNum++; break; else Key_UP = 0; BF = 0; // SIGNAL(INTERRUPT1) if ((IntNum > 0) && (IntNum < 9)) KeyV = KeyV >> 1; // >> if (PIND&0x10) KeyV = KeyV 0x80; // 1 1 www.mcudriver.cn AVR 51 Freescale8 26 1-wire I2C SPI

www.mcudriver.cn IntNum++; while (!(PIND&0x08)); // PS/2CLK if (IntNum > 10) IntNum = 0; // 11 BF = 1; // cli(); // ( BF // Decode() Decode ) main void main(void) uchar temp; cli();// port_init(); uart_init(); MCUCR = 0x0; GICR = 0x80; // INT1 sei();// puts( This is a PS/2 Program! );// while(1) if(bf) Decode(KeyV); else sei(); // 8.6 C HEX AVR www.mcudriver.cn AVR 51 Freescale8 27 1-wire I2C SPI