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

Similar documents
51 C 51 isp 10 C PCB C C C C KEIL

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

DPJJX1.DOC

CC213

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

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

FY.DOC

新版 明解C言語入門編

新・解きながら学ぶC言語

<4D F736F F D20B9F9B0EABBCDBBAFAB48DEB3B4C1A5BDB3F8A7692E646F63>

Microsoft Word - 專題封面.doc

W77E58中文手册

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

目录

C/C++语言 - C/C++数据

C 1

e 2 3 2

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++;

2 12

C C

untitled

C语言的应用.PDF

新・解きながら学ぶJava

单片机原理及应用实验指导书.doc

粤社保函〔2013〕80号

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

Microsoft Word - 第3章.doc

<313034A4BDB67DA4C0B56FBA5DB3E65FBD64A5BB2E786C7378>

untitled

C/C++ - 文件IO

学习MSP430单片机推荐参考书

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

微處理機期末專題

C/C++程序设计 - 字符串与格式化输入/输出

第5章修改稿

新版 明解C++入門編

C/C++ - 函数

!!#!#!#!# $% $&& ( $&)!* $&&% ) $ +,,+ ) $ -,,!# #!# $. $ $&&/ $,, %, (-- $% $&&, $) $&), $.-- $&&, $&), + $,&$

, 7, Windows,,,, : ,,,, ;,, ( CIP) /,,. : ;, ( 21 ) ISBN : -. TP CIP ( 2005) 1

从MCS51向AVR的快速转换.PDF

目 录

untitled

CC213

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

untitled

一 行 业 信 用 质 量 分 析 信 息 技 术 行 业 细 分 子 行 业 较 多, 部 分 子 行 业 受 到 宏 观 经 济 的 影 响 呈 现 较 明 显 的 周 期 性, 如 电 脑 与 外 围 设 备 办 公 电 子 设 备 等 传 统 智 能 硬 件 行 业, 但 以 技 术 进 步

2005.book


( CIP).:,3.7 ISBN TB CIP (3) ( ) ISBN O78 : 3.

nooog

就 构 成 了 盗 窃 罪 与 破 坏 交 通 设 施 罪 的 想 象 竞 合, 按 照 其 中 处 罚 较 重 的 犯 罪 处 罚 5. 答 案 :B 本 题 主 要 考 察 如 何 区 分 收 买 被 拐 卖 的 妇 女 儿 童 罪 与 拐 卖 妇 女 儿 童 罪 的 共 犯 问 题 ( 对 向

C/C++ - 字符输入输出和字符确认

考试大2011年高考试题答案

Ps22Pdf

广东省社会保险基金管理局办公室文件

( CIP. :, / ISBN D CIP ( ( 010) ( ) ( 010) / ( ) ( 010) 884

考 查 知 识 点 肝 气 疏 泄 调 畅 气 机 的 作 用, 主 要 表 现 在 以 下 几 个 方 面 :(1) 促 进 血 液 与 津 液 的 运 行 输 布 ;(2) 促 进 脾 胃 的 运 化 功 能 和 胆 汁 分 泌 排 泄 ;(3) 调 畅 情 志 ;(4) 促 进 男 子 排 精

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

Ps22Pdf


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

untitled

Microsoft Word - 01.DOC

JLX

四川省普通高等学校

PIC_SERVER (11) SMTP ( ) ( ) PIC_SERVER (10) SMTP PIC_SERVER (event driven) PIC_SERVER SMTP 1. E-

26 头 孢 他 啶 注 射 剂 27 头 孢 他 美 酯 口 服 常 释 剂 型 28 头 孢 吡 肟 注 射 剂 29 头 孢 硫 脒 注 射 剂 30 头 孢 唑 肟 注 射 剂 31 头 孢 替 安 注 射 剂 32 头 孢 哌 酮 注 射 剂 33 头 孢 哌 酮 舒 巴 坦 注 射 剂

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor

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

( 一 ) 全 面 贯 彻 党 和 国 家 的 教 育 方 针 政 策, 落 实 国 家 有 关 教 育 的 法 律 法 规 ; 研 究 草 拟 江 苏 省 教 育 法 规 和 政 策, 并 组 织 实 施 ( 二 ) 研 究 教 育 发 展 战 略 思 路, 统 筹 规 划 协 调 指 导 江 苏

14. 阿 亮 在 寒 假 春 節 期 間 與 父 母 到 一 座 廟 裡 拜 拜, 廟 裡 的 神 有 掌 生 死 簿 的 判 官 勾 攝 生 魂 的 黑 白 無 常 執 行 拘 提 魂 魄 的 牛 頭 馬 面, 整 間 廟 看 起 來 有 些 陰 森, 請 問 阿 亮 到 了 哪 一 座 廟 內

untitled

2015年计算机二级(C语言)模拟试题及答案(四)

<4D F736F F D AB4FA5C0A448ADFBA4FEAFC5C0B3C0CBB8EAAEC6B2C4A447B3A1A5F E646F63>

ttian

! "#$%& $()*+#$, $(-.&,./.+#/(-.&01( &-#&(&$# (&2*(,#-3.,14& $ +()5(*-#5(-#/-/#(-1#&-+)(& :;<<= > A B?

c_cpp

untitled

untitled

Microsoft PowerPoint - ds-1.ppt [兼容模式]

Microsoft Word 年9月二级C真卷.doc

untitled

3.1 num = 3 ch = 'C' 2

untitled

untitled

华恒家庭网关方案


概述

超级好的移值过程介绍: μC/GUI在MSGl9264液晶上的移植

(Microsoft Word - Motion Program \270\305\264\272\276\363 \307\245\301\366 \271\327 \270\361\302\367.doc)

Windows RTEMS 1 Danilliu MMI TCP/IP QEMU i386 QEMU ARM POWERPC i386 IPC PC104 uc/os-ii uc/os MMI TCP/IP i386 PORT Linux ecos Linux ecos ecos eco

Microsoft Word - cjfg_jy0201.doc

2 A

Microsoft Word - CPE考生使用手冊 docx

资源库建设方案(11月14最新)

E. (A) (B) (C) (D). () () () (A) (B) (C) (D) (E). () () () (A) (B) (C) (D) (E). (A)(B)(C) (D) (E) (A) (B) (C) (D) (E) (A) (B)(C) (D) (E). (A) (B) (C)

B3C1

5. 英 国 经 济 学 家 哥 尔 柏 说 : 税 收 这 种 技 术, 就 是 拔 最 高 的 鹅 毛, 听 最 少 的 鹅 叫 此 话 不 免 有 几 分, 但 却 形 象 地 说 明, 制 定 税 收 政 策 必 须 寻 找 一 个 合 适 的 点 依 次 填 入 划 横 线 部 分 最 恰

第一次段考 二年級社會領域試題 郭玉華 (A)(B) (C)(D)

untitled

Transcription:

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C51 6.1 C51 6.1.1 C51 C51 ANSI C MCS-51 C51 ANSI C C51 6.1 6.1 C51 bit Byte bit sbit 1 0 1 unsigned char 8 1 0 255 Signed char 8 11 128 127 unsigned int 16 2 0 65535 signed int 16 2 32768 32767 unsigned long 32 4 0 4294967295 Signed long 32 4 2147483648 2147483647 float 32 4 1.176E 38 3.40E 38( 6 ) double 64 8 1.176E 38 3.40E 38( 10 ) 6.1.2 C51 C51 C51 data bdata idata pdata xdata code C51 MCS-51 6.2 6.2 C51 MCS-51 (bit) (Byte) data 8 1 0 255 128 RAM bdata 8 1 32 47 RAM 20H 2FH idata 8 1 0 255 RAM 00H FFH pdata 8 1 0 255 256 RAM MOVX @Ri xdata 16 2 0 65535 64K RAM MOVX @DPTR code 16 2 0 65535 64K ROM MOVC @DPTR RAM RAM 1

data bdata idata RAM pdata xdata code C51 ANSI C C++ char data var1 /* data RAM */ bit bdata flags // bdata RAM float idata x y z // x y z idata RAM unsigned int pdata dimension // pdata MOVX @Ri unsigned char xdata vector[10][4][4] // xdata RAM 10 4 4=160 SMALL COMPACT LARGE char var1 SMALL var1 data COMPACT var1 idata LARGE var1 xdata 6.3 6.3 128 data SMALL RAM COMPACT 256 pdata R0 R1 64KB xdata DPTR LARGE 6.1.3 C51 MCS-51 SFR MCS-51 21 SFR RAM 128 8 SFR SFR C51 sfr sbit SFR RAM I/O (1) SFR SFR sfr sbit C C51 sfr sbit sfr PSW=0xD0 // PSW D0H sfr TMOD=0x89 // / TMOD 89H sfr P1=0x90 // P1 90H sbit CY=0xD7 // CY D7H sbit AC=0xD0^6 // AC D6H sbit RS0=0xD0^3 // D3H 2

sfr sbit SFR (2) SFR MCS-51 SFR Keil C Keil C INC SFR #include aduc812.h // ADI Aduc812 main() TL0=0xb0; // 0 TH0=0x3c; TR0=1; // 0 (3) I/O RAM RAM I/O #include <absacc.h> // XBYTE RAM #define PA XBYTE[0xffec] // PA I/O oxffec main() PA=0x3A; // 3AH 0xffec I/O (4) C51 bit bit lock // lock bit dirention // direction bit bit bit func(bit b0,bit b1) bit a; return a; #progma disable using n bit *bitno; bit bitarray[10]; 3

bdata bdata int bdata a // a char bdata b[4] // b sbit sbit a0=a^0 // a0 a 0 sbit a12=a^12 // a12 a 12 sbit b03=b[0]^3 // b[0] 3 sbit b36=b[3]^6 // b[3] 6 sbit bdata sbit 6.2 C51 C51 ANSI C 6.2.1 C51 (1) C51 * (2) j j i i j 1 j 1 (3) (2a+3b)*c/d C51 C 6.1 4 6.1 C51

int a b //a (double) a+b // a+b double 6.2.2 C51 (1),C51 (2) a>b a=3 < b=2 C51 1 0 a>=b a 4 b 3 1 a 2 0 6.2.3 C51 (1) C51 && (2) 0 a&&b&&c a 0 b c 0 6.2.4 C51 C51 5

& var3 var1 & bvar2 var3 var1 bvar2 var3 var1 bvar2 var1 var2 << var1 var<<2 >> var1 var2>>5 MCS-51 C51 6.2.5 C51 (1) = (2) = a=(b=4)+(c=6) 10 a 10 (3) = IEEE long int long int long int long int long long int (4) C51 * ^ << >> a += b // a = (a+b) x *= a+b // x = (x*(a+b)) a &= b // a = (a&b) a <<= 4 // a = (a<<4) 6.3 C51 C51 6

6.3.1 n [n] [ ] (1) [ ] int demo1[10] // 10 int a[5]=1 2 3 4 5 // a[0]=1 a[1]=2 a[2]=3 a[3]=4 a[4]=5 int b[6]=1 2 6 // b[0]=1 b[1]=2 b[2]=6 b[3]=b[4]=b[5]=0 (2) [ ] [ ] float demo2[3][4] //demo2 3 4 12 int a[3][4]=1 2 3 4 5 6 7 8 9 10 11 12 // int b[3][4]=1 2 3 4 5 6 7 8 // 0 (3) char a[12]= Chong Qing // char add[3][6]="weight","height","width"; // 6.3.2 C51 (1) char xdata *px // px RAM // Px 2 char xdata *data py // px RAM // Py RAM 2 7

(2) * char *pz pz pz 3 6.4 6.5 6.4 3 +0 +1 +2 6.5 idata xdata pdata data code 1 2 3 4 5 0x55 0x8000 RAM #include <absacc.h> XBYTE[0x8000]=0x41 //XBYTE absacc.h #define XBYTE ((unsigned char *) 0x2000L) XBYTE (unsigned char *) 0x2000L 2 xdata 0000 XBYTE RAM XBYTE[8000] 0x8000 RAM 6.3.3 C51 (1) struct // date struct date int month int day int year (2) 8

date date1 date2 // date date1 date2 struct student int no char name[20] int grade wangxiao liping // date1 date2 (3) date1.year = 2003 date1.month = 12 date1.day = 25 C51 6.4 C51 ANSI C C51 C51 6.4.1 C51 if switch/case (1) if C51 if if if 1 else 2 if 1 1 else if 2 2 else if 3 3 if if if if if else else if 6.1 0.000 9999 4 4 0.000 9.999 10.00 99.99 100.0 999.9 1000 9999 0 1 2 3 int ftochar(float valp) int dotno=0; if(valp<10.0) dotno=0; else if((valp>=10.0)&&(valp<100.0)) dotno=1; else if((valp>=100.0)&&(valp<1000.0)) dotno=2; else if(valp>=1000.0) dotno=3; return dotno; 9

(2) switch/case switch/case C51 switch case 1 1 break case 2 2 break case n n break default n+1 switch case break switch case default case case default case break switch case 6.2 AT89C51 P1.0 P1.1 4 P2.0 P2.3 4 LED #include <at89x51.h> void main() char a; do a=p1; a=a&0x03; // 6 P2=P2&0xf0; switch (a) case0 P2=P2 0x01 break case1 P2=P2 0x02 break case2 P2=P2 0x04 break case3 P2=P2 0x08 while(1) 6.4.2 C51 4 10

(1) if goto if goto loop if goto loop loop if goto loop if goto loop goto goto goto (2) while while while // while 0 while (3) do-while do-while do // while do-while 0 0 6.3 sample 10 float avg(float *sample) float sum=0 char no=0 11

do sum += sample[no] no++ while(no<10) return (sum/10) (4) for for for 1 2 3 1 2 0 3 2 for 1 2 3 6.4 1 100 printf( ) #include<aduc812.h> #include<atdio.h> int getsum (void) main( ) SCON = 0x50 // Keil C printf( ) SCON TMOD = TMOD 0x20 // T1 2 TH1 = 0xfd // 9600bps T1 0xfd TL1 =0xfd TR1 = 1 // T1 TI = 1 // printf("%d\n",getsum()); do while(1); int getsum (void) int sum=0 int n for (n=1;n<=100;n++) sum=sum+n return sum 12

6.4.3 C51 C51 C51 interrupt n using r interrupt using n n 0 5 0 / 0 1 / 1 / 2 6 MCS-51 r 0 3 6.5 Aduc812 12MHz P1.0 2 #include<aduc812.h> int t0int_no = 0 sbit p11 = P1^0 main( ) TMOD = 0x1 // T0 1 TH0 = 0x3c // 50ms 1 TL0 = 0xb0 IE = 0x82 // TR0 = 1 p11 = 0 // do while(1); // SJMP $ void time0_int ( void ) interrupt 1 TH0 = 0x3c // TL0 = 0xb0 t0int_no++ // 20 P1.0 if( t0int_no >= 20 ) t0int_no = 0 p11= ~p11 6.5 C51 6.5.1 (1) 13

C C main( ) C C 2 C51 (2) int char float double void return 6.5.2 ( ) ANSI C C51 6.6 C51 6.6 6.3 sample 8 14

#include<aduc812.h> #include<stdio.h> float demo[ ]=67.5,2.0,3.0,4.0,5.0,30.6,7.0,8.0,9.0,10.0; float avg2(float*); main() SCON = 0x50 // SCON printf( ) 2 TMOD = TMOD 0x20 // T1 2 TH1 = 0xfd // 9600bps T1 0xfd TL1 =0xfd TR1 = 1 // T1 TI = 1 // printf("%f\n",avg2(demo)) do while(1); float avg2(float *sample) float max,min,sum; char no=1; max=min=sum=sample[0]; for(no=1;no<10;no++) if(max < sample[no]) max=sample[no]; if(min > sample[no]) min=sample[no]; sum += sample[no]; return ((sum-max-min)/8); 6.7 6.2 8155 8155PA 8 8 LED 1 6.2 6.7 15

8155 COM8155 8000H PA PA8155 8001H PB PB8155 8002H PC PC8155 8003H PB 8155PB 02H #include<at89x51.h> #include <absacc.h> #define COM8155 XBYTE[0x8000] #define PB8155 XBYTE[0x8002] int t0int_no=0; main() TMOD=0x1; TH0=0x3c; TL0=0xb0; IE=0x82; TR0=1; p11=0; do while(1); void time0_int(void) interrupt 1 TH0=0x3c; TL0=0xb0; t0int_no++; if(t0int_no>=20) t0int_no=0; PB8155=disp_word; disp_word= disp_word<<1; if( disp_word = =0) disp_word = 0x01; LED 8155 PB LED LED 6.8 Aduc812 4 4 1/4 16

20ms 4 1 4 1 #include<aduc812.h> unsigned char data disp_buffer[4]=12,0,0,0; 6.3 6.8 unsigned char dispno=0; unsigned char data disp_buffer[4]=1,2,3,4; unsigned char code segment_table[]=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f sbit ledb3=p3^4; sbit ledb2=p3^5; sbit ledb1=p3^6; sbit ledb0=p3^7; main() TMOD=0x1; TH0=0xee; // 11.0592MHz 5ms 1 TL0=0x00; IE=0x82; TR0=1; p11=0; do while(1); void time0_int(void) interrupt 1 17

TH0=0xee; TL0=0x00; P0=0x00; P3=P3 0xf0; P0=segment_table[disp_buffer[dispno]]; // 4 // disp_buffer switch(dispno) case 0: ledb3=0; break; // 0 case 1: ledb2=0; break; // 1 case 2: ledb1=0; break; // 2 case 3: ledb0=0; break; // 3 default: break; dispno++; if(dispno>3) dispno=0; // 3 0 6.9 6.1 4 LCD 0.000 9999 4 4 5 unsigned char * float_char(float valp) char idata disp[5]; // 4 if(valp<10.0) // 0.000 9.999 1000 4 0 disp[4]=0; valp *=1000.0; else if((valp>=10.0)&&(valp<100.0)) // 10.00 99.99 100 4 1 disp[4]=1; valp *=100.0; else if((valp>=100.0)&&(valp<1000.0)) // 100.0 999.9 10 4 2 disp[4]=2; valp *=10.0; 18

else if(valp>=1000.0) disp[4]=3; // 1000 9999 3 disp[0]=(int)valp/1000; // disp[1]=((int)valp%1000)/100; // disp[2]=(((int)valp%1000)%100)/10; // disp[3]=(((int)valp%1000)%100)%10; // return disp; // 6.10 Aduc812 ADC6 0 5V ADCCON1 ADCCON2 ADCCON3 Aduc812 A/D 4 #include<aduc812.h> float adc(void) main( ) ADCCON1=0x7c; //ADC 8 9 ADCCON2=(ADCCON2&0xf0) 0x06; // 6 SCONV=1; // A/D for( ) printf( %f\n adc( )); float adc(void) char status; float ftemp; do status=adccon3&0x80; // ADCCON3 while(status!= 0); ftemp=(adcdatah&0x0f)*256+adcdatal; // A/D ftemp=ftemp*5.0 /4095.0; // SCONV=1; // return ftemp; 6.11 Aduc812 D/A Aduc812 2 12 D/A 4 void dac(int dac1 int dac2) DACCON=0x7f; DAC0H=(dac1/256)&0x0f; // 19

DAC0L=dac1%256; DAC0H=(dac2/256)&0x0f; DAC0L=dac2%256; // C51 C51 C51 C51 C C51 ANSI C MCS-51 bits bit data bdata idata pdata xdata code C51 interrupt using C51 ANSI C C51 I/O 6 1 C51 Turbo C 2 C51 3 C51 data bdata idata 4 1 100 3 5 / 0 6 demo[0] demo[3] 4 7 MCS-51 P1 8 P2 8 LED P1 LED 8 6.3 10 9 6.3 P1.0 P1.3 4 4 20