第13章8051人机交互的C编程
- 格式:ppt
- 大小:607.00 KB
- 文档页数:35
C8051F020单片机初始化程序和编译步骤2011-02-15 12:20:06| 分类:默认分类| 标签:|字号大中小订阅C8051F020编程步骤一、编程步骤:1、看门狗设置2、系统初始化3、端口初始化4、对应功能初始化(如:串口,定时器,I2C,SPI,PCA,DAC/ADC,中断等等)5、功能函数或中断函数(如需要)6、包含的头文件7、项目说明二、对应功能初始化要点:1、Uart:(1)串口工作模式由SCON设定(2)定时器工作方式设定TMOD (3)波特率TH 载入值设定(4)启动TR1 (5)时钟基准CKCON (6)波特率加倍设定PCON(7)开中断使能TI2、Time:(1)工作方式设定TMOD (2)定时器时钟基准CKCON (3)启动/停止TCON设定TRn3、Interrupt:(1)中断允许IE (2)触发方式设定(上下沿,电平)(3)对应控制位允许设定,如ES串口允许C8051F020单片机初始化程序; $INCLUDE (C8051F020.inc) /C8051F020单片机功能强大,初始化也比较繁杂,为了便于初始化各功能模块,我们编了此程序可看着“说明”初始化。
ORG SYS_INIT;※▲◆●◎★☆△;◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆;■-- <1> --电源管理; PCON ; POWER CONTROL;■-- <2> --系统时钟和振荡器; OSCXCN ; EXTERNAL OSCILLA TOR CONTROL; OSCICN ; INTERNAL OSCILLA TOR CONTROL;■-- <3> --复位及看门狗管理; RSTSRC ; RESET SOURCE; WDTCN ; W A TCHDOG TIMER CONTROL;■-- <4> --FLASH存储器编程和安全管理; FLSCL ; FLASH MEMORY TIMING PRESCALER; PSCTL ; PROGRAM STORE R/W CONTROL; FLACL ; FLASH ACESS LIMIT;■-- <5> --中断控制; IE ; INTERRUPT ENABLE; EIE1 ; EXTERNAL INTERRUPT ENABLE 1; EIE2 ; EXTERNAL INTERRUPT ENABLE 2; IP ; INTERRUPT PRIORITY; EIP1 ; EXTERNAL INTERRUPT PRIORITY REGISTER 1; EIP2 ; EXTERNAL INTERRUPT PRIORITY REGISTER 2; P3IF ; PORT 3 EXTERNAL INTERRUPT FLAGS;■-- <6> --端口IO初始化及交叉开关设置; XBR0 ; DIGITAL CROSSBAR CONFIGURA TION REGISTER 0; XBR1 ; DIGITAL CROSSBAR CONFIGURA TION REGISTER 1; XBR2 ; DIGITAL CROSSBAR CONFIGURA TION REGISTER 2; P0MDOUT ; PORT 0 OUTPUT MODE CONFIGURA TION; P1MDOUT ; PORT 1 OUTPUT MODE CONFIGURA TION; P2MDOUT ; PORT 2 OUTPUT MODE CONFIGURA TION; P3MDOUT ; PORT 3 OUTPUT MODE CONFIGURA TION; P74OUT ; PORTS 4 - 7 OUTPUT MODE;■-- <7> --外部RAM和片内XRAM; EMI0CN ; EXTERNAL MEMORY INTERFACE CONTROL; EMI0CF ; EXTERNAL MEMORY INTERFACE (EMIF) CONFIGURA TION ; EMI0TC ; EXTERNAL MEMORY;■-- <8> --定时器设置; TMOD ; TIMER MODE; TCON ; TIMER CONTROL; T2CON ; TIMER 2 CONTROL; T4CON ; TIMER 4 CONTROL; TMR3CN ; TIMER 3 CONTROL; TMR3RLL ; TIMER 3 RELOAD REGISTER - LOW BYTE; TMR3RLH ; TIMER 3 RELOAD REGISTER - HIGH BYTE; TMR3L ; TIMER 3 - LOW BYTE; TMR3H ; TIMER 3 - HIGH BYTE;■-- <9> --串行通讯; SCON0 ; SERIAL PORT 0 CONTROL; SCON1 ; SERIAL PORT 1 CONTROL; SBUF1 ; SERAIL PORT 1 DA TA; SADDR1 ; SERAIL PORT 1; PCON ; POWER CONTROL; RCAP2L ; TIMER 2 CAPTURE REGISTER - LOW BYTE; RCAP2H ; TIMER 2 CAPTURE REGISTER - HIGH BYTE; RCAP4L ; TIMER 4 CAPTURE REGISTER - LOW BYTE; RCAP4H ; TIMER 4 CAPTURE REGISTER - HIGH BYTE; SADDR0 ; SERIAL PORT 0 SLA VE ADDRESS;■-- <10> --可编程计数器阵列; PCA0CN ; PCA 0 COUNTER CONTROL; PCA0MD ; PCA 0 COUNTER MODE; PCA0CPM0 ; CONTROL REGISTER FOR PCA 0 MODULE 0; PCA0CPM1 ; CONTROL REGISTER FOR PCA 0 MODULE 1; PCA0CPM2 ; CONTROL REGISTER FOR PCA 0 MODULE 2; PCA0CPM3 ; CONTROL REGISTER FOR PCA 0 MODULE 3; PCA0CPM4 ; CONTROL REGISTER FOR PCA 0 MODULE 4;■-- <11> --SMBus通讯; SMB0CN ; SMBUS 0 CONTROL; SMB0CR ; SMBUS 0 CLOCK RA TE; SMB0STA; SMBUS 0 STA TUS; SMB0DA T ; SMBUS 0 DA TA; SMB0ADR ; SMBUS 0 SLA VE ADDRESS;■-- <12> --SPI总线通讯; SPI0CKR ; SERIAL PERIPHERAL INTERFACE 0 CLOCK RA TE CONTROL ; SPI0DA T ; SERIAL PERIPHERAL INTERFACE 0 DA TA; SPI0CFG ; SERIAL PERIPHERAL INTERFACE 0 CONFIGURA TION; SPI0CN ; SERIAL PERIPHERAL INTERFACE 0 CONTROL;-- <13> --ADC转换; AMX0CF ; ADC 0 MUX CONFIGURA TION; AMX0SL ; ADC 0 MUX CHANNEL SELECTION; ADC0CF ; ADC 0 CONFIGURA TION; ADC0CN ; ADC 0 CONTROL; ADC0L ; ADC 0 DA TA - LOW BYTE; ADC0H ; ADC 0 DA TA - HIGH BYTE; ADC1CF ; ADC 1 ANALOG MUX CONFIGURA TION; AMX1SL ; ADC 1 ANALOG MUX CHANNEL SELECT; ADC1CN ; ADC 1 CONTROL; ADC0GTL ; ADC 0 GREA TER-THAN REGISTER - LOW BYTE; ADC0GTH ; ADC 0 GREA TER-THAN REGISTER - HIGH BYTE; ADC0LTL ; ADC 0 LESS-THAN REGISTER - LOW BYTE; ADC0LTH ; ADC 0 LESS-THAN REGISTER - HIGH BYTE; REF0CN ; VOLTAGE REFERENCE 0 CONTROL; ADC1 ; ADC 1 DA TA;■-- <14> --DAC转换; PCA0L ; PCA 0 TIMER - LOW BYTE; PCA0H ; PCA 0 TIMER - HIGH BYTE; DAC0CN ; DAC 0 CONTROL; DAC1L ; DAC 1 REGISTER - LOW BYTE; DAC1H ; DAC 1 REGISTER - HIGH BYTE; DAC1CN ; DAC 1 CONTROL;■-- <15> --比较器设置; CPT0CN ; COMPARA TOR 0 CONTROL; CPT1CN ; COMPARA TOR 1 CONTROL; EMI0TC ; EMIF TIMING CONTROL;■-- <16> --时钟/电压基准设置; CKCON ; CLOCK CONTROL; SADEN1 ; SERIAL PORT 1 SLA VE ADDRESS MASK; SADEN0 ; SERIAL PORT 0 SLA VE ADDRESS MASK; P1MDIN ; PORT 1 INPUT MODE; PSW ; PROGRAM STA TUS WORD; B ; B REGISTER; WDTCN ; W A TCHDOG TIMER CONTROL;◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆;;==================================================================== ; function: Init_CTS 定时器/计数器,中断和串行通讯初始化子程序; input: -----------------; output: -----------------; usage: -----------------;==================================================================== THS0 equ 0a8hTLS0 equ 09ah; THS1 equ 0fah;0feh;0fah;-4800;0f4h; TLS1 equ 0fah;0feh;0fah;-4800;0f4h;; THS2 equ 0ffh;0feh;0fah;-4800;0f4h; TLS2 equ 0b8h;0feh;0fah;-4800;0f4hInit_TCS: ;定时器/计数器,中断和串行通讯初始化子程序;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓; ◆◆◆8051内部控制寄存器◆◆◆;****************************************************************************** ******;|名称| 代号| 地址|位寻| B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 |;|--------|------|------|----|-----|------|------|------|------|------|------|------|;|电源控制| PCON | 87H | NO |SMOD | -- | -- | -- | GF1 | GF0 | PD | IDL |;|--------|------|------|----|-----|------|------|------|------|------|------|------|;|计时控制| TCON | 88H | YE |TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 |;|--------|------|------|----|-----|------|------|------|------|------|------|------|;|计时模式| TMOD | 89H | NO |1GA TE| 1C/T | 1M1 | 1M0 | 0GA TE| 0C/T | 0M1 | 0M0 | ;|--------|------|------|----|-----|------|------|------|------|------|------|------|;|串行控制| SCON | 98H | YE |SM0 | SM1 | SM2 | REN | TB8 | RB8 | TI | RI |;|--------|------|------|----|-----|------|------|------|------|------|------|------|;|中断允许| IE | A8H | YE |EA| -- | ET2 | ES | ET1 | EX1 | ET0 | EX0 |;|--------|------|------|----|-----|------|------|------|------|------|------|------|;|中断优先| IP| B8H | YE |-- | -- | PT2 | PS | PT1 | PX1 | PT0 | PX0 |;****************************************************************************** ******;时钟频率为:11.059200MHz;;机器周期为:12/fosc=1.085069μs;;CT0定时器设定延时为:2000μs;;CT0定时器工作于模式0;;CT0溢出处理采用中断方式;;CT0选择内部时钟;;CT0启动由TR0的0/1决定;;设定波特率为:4800bps;;串口0工作于方式1--T1定时器工作于方式2;;串口1工作于模式3--T2定时器用于波特率发生器4800bpsmov TH0, #THS0mov TL0, #TLS0; mov TH1, #THS1; mov TL1, #TLS1; mov TH2, #THS2; mov TL2, #TLS2;▲■-- <1> --电源管理;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓;87H---PCON-------电源控制寄存器;复位值: 00000000;位7-2:保留。
8051指令集資料轉移指令MOV 移動MOVC 程式記憶體移動MOVX 外部RAM和扩展I/O口与累加器A的数据传送指令PUSH 放入堆疊POP 由堆疊取回XCH 8位元交換XCHD 低4位元交換SWAP 高低4位元交換算術指令ADD 兩數相加ADDC 兩數相加再加CSUBB 兩數相減再減CINC 加一指令DEC 減一指令MUL (MUL AB乘法指令仅此一条)相乘指令,所得的16位二进制数低8位存累加器A高8位存BDIV (DIV AB 除法指令仅此一条)相除指令,所得商存A,余数存BDA (DA A 只此一条指令)調整為十進數邏輯指令ANL做AND(逻辑与)運算ORL做OR(逻辑或)運算XRL 做(逻辑异或)運算CLR 清除為0CPL 取反指令RL 不带进位左环移RLC 带进位左环移RR 不带进位右环移RRC 带进位右环移控制转移类指令JC C=1時跳JNC C=0時跳JB 位元=1時跳JNB 位元=0時跳JBC 位元=1時跳且清除此位元LCALL 长调用子程序ACALL 绝对调用子程序RET 由副程式返回RETI 由中斷副程式返回AJMP 绝对转移SJMP 相对转移JMP @A+DPTR 散转,相对DPTR的间接转移JZ A=0時跳JNZA 0時跳CJNE 二數比較,不相等時跳DJNZ 減一,不等於0時跳NOP 空操作位变量指令SETB 設定為1ORG 程序开始,规定程序的起始地址END 程序结束EQU 等值指令(先赋值后使用)例:SUM EQU 30H DB 定义字节指令DW 定义字内容DS 定义保留一定的存贮单元数目BIT 位地址符号指令例:SAM BIT P1.0RET 子程序返回指令RETI 中断子程序返回指令$ 本条指令地址算术运算指令指令说明周期ADD A,Rn A←A+Rn 12ADD A,direct A←A+direct 12ADD A,@Ri A←A+Ri 12ADD A,#data A←A+data 12ADDC A,Rn A←A+Rn+C 12ADDC A,direct A←A+direct+C 12ADDC A,@Ri A←A+Ri+C 12ADDC A,#data A←A+data+C 12SUBB A,Rn A←A-Rn-C 12SUBB A,direct A←A-direct-C 12SUBB A,@Ri A←A-Ri-C 12SUBB A,#data A←A-data-C 12INC A A←A+1 12INC Rn Rn←Rn+1 12INC direct direct←direct+1 12INC @Ri @Ri←@Ri+1 12INC DPTR DPTR←DPTR+1 12DEC A A←A-1 12DEC Rn Rn←Rn-1 12DEC direct direct←direct-1 12DEC @Ri @Ri←@Ri-1 12MUL AB 两个无符号的8位数据相乘,其中高阶8位放入B缓存器,低阶8位则放入累积器ACC 24DIV AB 两个无符号的8位数据相除,把ACC值除以B缓存器值,商数放回ACC,余数放在B 48 DA A 累加器作十进制调整 48逻辑运算指令指令说明周期ANL A,Rn A←A and Rn 12ANL A,direct A←A and direct 12ANL A,@Ri A←A and Ri 12ANL A,#data A←A and data 12ANL direct,A direct←direct and A 12ANL direct,#data direct←direct and data 24ORL A,Rn A←A or Rn 12ORL A,direct A←A or direct 12ORL A,Rn A←A or Rn 12ORL A,@Ri A←A or Ri 12ORL A,#data A←A or data 12ORL direct,A direct←direct or A 12ORL direct,#data direct←direct or data 24XRL A,Rn A←A xor Rn 12XRL A,direct A←A xor direct 12XRL A,@Ri A←A xor Ri 12XRL A,#data A←A xor data 12XRL direct,A direct←direct xor A 12XRL direct,#data direct←direct xor data 12CLR A 清除累加器 12CPL A 累加器反相 12RL A 累加器向左旋转 12RLC A 累加器和C左旋 12RR A 累加器向右旋转 12RRC A 累加器和C右旋 12SWAP A 累加器的高低四位互换 12数据转移指令指令说明周期MOV A,Rn A←Rn 12MOV A,direct A←direct 12MOV A,@Ri A←Ri 12MOV A,#data A←data 12MOV Rn,A Rn←A 12MOV Rn,direct Rn←direct 24MOV Rn,#data Rn←data 12MOV direct,A direct←A 12MOV direct,Rn direct←Rn 24MOV direct,direct direct←direct 24MOV direct,@Ri direct←Ri 24MOV direct,#data direct←data 24MOV @Ri,A Ri←A 12MOV @Ri,direct Ri←direct 24MOV @Ri,#data Ri←data 12MOV DPTR,#data 16 Ri←16bit data 24MOVC A,@A+DPTR A←程序内存的数据 24MOVC A,@A+PC A←程序内存的数据 24MOVX A,@Ri A←外部RAM的数据(8bit地址) 24 MOVX A,@DPTR A←外部RAM的数据(16bit地址) 24 MOVX @Ri,A 外部的RAM(8bit)←A 24MOVX @DPTR,A 外部的RAM(16bit)←A 24PUSH direc 推迭区←direct 24POP direc direct←堆栈区 24XCH A,Rn A和Rn互换 12XCH A,direct A和direct互换 12XCH A,@Ri A和Ri互换 12XCHD A,@Ri A和Ri的低四位互换 12位运算指令指令说明周期CLR C 清除进位旗标 12CLR bit 清除直接位 12SETB C 设定进位旗标 12SETB bit 设定直接位 12CPL C 进位旗标反相 12CPL bit 直接位反相 12ANL C,bit C←C and bit 24ANL C,/bit C←C and bit(反相) 24ORL C,bit C←C or bit 24ORL C,/bit C←C or bit(反相) 24MOV C,bit C←bit 12MOV bit,C bit←C 24JC rel 若C=1跳至rel 24JNC rel 若C=0跳至rel 24JB bit,rel 若bit=1跳至rel 24JNB bit,rel 若bit=0跳至rel 24JBC bit,rel 若bit=1跳至rel,且清除此位 24程序跳跃指令指令说明周期ACALL addr11 绝对式子程序呼叫 24LCALL addr16 远程子程序呼叫 24RET 从子程序返回 24RETI 从中断子程序返回 24AJMP addr11 绝对式跳跃 24LJMP addr16 远程跳跃 24SJMP rel 短程跳跃 24JMP @A+DPTR 间接跳跃 24JZ rel 若A=0跳至rel 24JNZ rel 若A不等于0跳至rel 24CJNE A,direct,rel 若A不等于direct跳至rel 24CJNE A,#data,rel 若A不等于data跳至rel 24CJNE Rn,#data,rel 若Rn不等于data跳至rel 24CJNE @Ri,#data,rel 若Ri不等于data跳至rel 24DJNZ Rn,rel Rn减1不等于0跳至rel 24DJNZ direct,rel direct减1不等于0跳至rel 24NOP 没动作 12缩写符号说明缩写符号说明备注Rn 缓存器R0-R7direct 8bit内部数据存储器,包括1.内部数据存储器(00-7F)的地址2.特殊功能缓存器(80-FF)的地址,如P0,PSW,TMOD..等@Ri 由缓存器R0或R1所寻址的内部RAM数据#data 8bit常数#data 16 16bit常数addr 16 16bit的目的地址,可使跳跃指令跳跃64kaddr 11 11bit的目的地址,可使跳跃指令跳跃2krel 具正负号的8位地址偏移量,用于相对地址的跳跃bit 1个bit:只所有可以位寻址的位。
《8051单片机C语言编程模板》[程序开始处的程序说明]/*************************************************************************** ******************程序名:编写人:赛杜洋编写时间:2012年12月25日硬件支持:接口说明:修改日志:NO.1-/*************************************************************************** ******************说明:/*************************************************************************** ******************/[单片机SFR定义的头文件]#include <REG51.h> //通用89C51头文件#include <REG52.h> //通用89C52头文件#include <STC11Fxx.H> //STC11Fxx或STC11Lxx系列单片机头文件#include <STC12C2052AD.H> //STC12Cx052或STC12Cx052AD系列单片机头文件#include <STC12C5A60S2.H> //STC12C5A60S2系列单片机头文件[更多库函数头定义]#include <assert.h> //设定插入点#include <ctype.h> //字符处理#include <errno.h> //定义错误码#include <float.h> //浮点数处理#include <fstream.h> //文件输入/输出#include <iomanip.h> //参数化输入/输出#include <iostream.h> //数据流输入/输出#include <limits.h> //定义各种数据类型最值常量#include <locale.h> //定义本地化函数#include <math.h> //定义数学函数#include <stdio.h> //定义输入/输出函数#include <stdlib.h> //定义杂项函数及内存分配函数#include <string.h> //字符串处理#include <strstrea.h> //基于数组的输入/输出#include <time.h> //定义关于时间的函数#include <wchar.h> //宽字符处理及输入/输出#include <wctype.h> //宽字符分类#include <intrins.h> //51基本运算(包括_nop_空函数)[常用定义声明]sfr [自定义名] = [SFR地址] ; //按字节定义SFR中的存储器名。
8051系列单片机C程序设计完全手册(实事求是编著)目录第1章单片机基础1.1 单片机技术发展状况1.2 51系列单片机体系结构1.2.1 内部结构1.2.2 存储器组织结构l.2.3 内部功能模块l.2.4 外部引脚1.2.5 系统资源扩展1.3 单片机的编程方法第2章 C语言编程基础2.1 基本概念2.1.1 概述2.1.2 变量与算术表达式2.1.3 for语句2.1.4 符号常量2.2 数据类型、运算符和表达式2.2.1 C语言的数据类型2.2.2 常量与变量2.2.3 整型数据2.2.4 实型数据2.2.5 字符型数据2.2.6 运算符2.2.7 表达式2.3 程序控制语句2.3.1 程序的3种基本结构2.3.2 条件控制语句2.3.3 程序应用举例2.4 循环控制语句2.4.1 while语句2.4.2 dowhile语句2.4.3 for语句2.4.4 break与continue语句2.4.5 程序应用举例2.5 小结第3章 C语言高级编程3.1 函数与程序结构3.1.1 函数的基本知识3.1.2 返回非整数值的函数3.1.3 外部变量3.1.4 作用域规则3.1.5 头文件3.1.6 静态变量3.1.7 寄存器变量3.1.8 分程序结构3.1.9 初始化3.1.10 递归3.2 数组3.2.1 一维数组3.2.2 维数组3.2.3 多维数组3.2.4 数组的初始化3.3 指针3.3.1 指针与指针变量.3.3.2 指针变量的定义与引用3.3.3 指针运算符与指针表达式3.3.4 指针与数组3.3.5 指针的地址分配3.3.6 指针数组3.3.7 指向指针的指针3.4 占构体与共用体3.4.1 结构体类型变量的定义和引用3.4.2 结构体数组的定义和引用3.4.3 结构体指针的定义和引用3.4.4 共用体3.5 小结第4章C51程序设计4.1 C51对标准C语言的扩展4.1.1 存储区域4.1.2 数据变量分类4.1.3 存储器模式4.1.4 绝对地址的访问4.1.5 指针4.1.6 函数4.2 C5 1函数库4.2.1 字符函数CTYPE.H4.2.2 一般I/O函数STDIO.H4.2.3 字符串函数STRING.H4.2.4 标准函数STDLIB.H4.2.5 数学函数MATH.H4.2.6 绝对地址访问ABSACC.H4.2.7 内部函数INTRINS.H4.2.8 变量参数表STDARG.H4.2.9 全程跳转SETJMPH4.2.10 访问SFR和SFR bit地址REGxxx.H4.3 C51程序编写4.3.1 C程序基本结构4.3.2 编写高效的C51程序及优化程序第5章 Windows集成开发环境μVision25.1 μVision2编辑界面及其功能介绍5.1.1 μVision2界面综述5.1.2 主菜单栏5.1.3 μVision2功能按钮5.1.4 μVision2窗口环境5.2 应用μVision2开发流程介绍5.2.1 建立新项目5.2.2 常用环境配置5.2.3 代码优化5.2.4 目标代码调试5.3 CPU仿真5.3.1 μVision2调试器5.3.2 调试命令5.3.3 存储器空间5.3.4 表述(Expressions)5.3.5 技巧5.4 深入了解μVision25.4.1 μVision2的项目管理5.4.2 使用技巧5.4.3 μVision2调试函数第6章 C5l编译器6.1 预处理6.1.1 宏定义6.1.2 文件包含6.1.3 条件编译6.1.4 其他预处理命令6.2 C51编译器控制指令详解6.2.1 源控制指令6.2.2 列表控制指令6.2.3 目标控制指令6.3 C5l的高级配置文件6.3.1 目标程序启动配置文件——STARTUP.A51.6.3.2 CPU初始化文件——START751.A516.3.3 静态变量初始化文件——INT.A516.3.4 专用变量初始化文件——INIT751.A51第7章 C51的典型资源编程7.1 中断系统设计7.2 定时/计数器的使用7.3 I/O口的使用7.4 扩展存储器7.4.1 外部ROM7.4.2 外部RAM7.4.3 外部串行E2PROM7.5 一个使用多种资源的完整例程7.5.1 项目需求7.5.2 步进电机背景知识7.5.3 解决方案设计与实现第8章单片机通信8.1 串口通信8.1.1 串行通信基础8.1.2 单片机串口使用8.2 单片机点对点通信8.2.1 通信接口设计8.2.2 单片机点对点通信程序设计8.3 单片机多机通信8.3.1 主机部分通信程序设计8.3.2 从机部分通信程序设计8.4 单片机I2C总线通信8.4.1 I2C总线介绍8.4.2 I2C总线硬件接口设计8.4.3 I2C总线模拟硬件接口软件设计8.4.4 I2C总线系统的设计要点8.5 单片机与计算机的互连8.5.1 电路设计8.5.2电路的C5 1程序代码8.5.3计算机端的Visual C++程序代码第9章 C51单片机的工程开发实例9.1 单片机系统设计方法9.2 C51系统设计的相关知识9.2.1 硬件以及电路的知识9.2.2 软件以及编程语言的知识9.3 C5l系统设计需要注意的一些问题9.3.1 单片机资源的分配9.3.2 单片机的寻址9.3.3 C5 1函数的返回值9.3.4 单片机的看门狗功能9.3.5 单片机的外设9.3.6 单片机的功耗9.4 有关C51的一些问题9.5 键盘和发光数码管显示9.5.1 电路设计的背景及功能9.5.2 电路的设计9.5.3 键盘扫描电路的C51程序代码9.5.4 电路的改进——键盘的消抖动程序9.5.5 电路的显示部分-LED数码管电路9.6 A/D、D/A转换器使用9.6.1 电路设计的背景及功能9.6.2 电路的设计9.6.3 电路的C51程序代码9.7 基于单片机的数字钟9.7.1 电路设计的背景及功能9.7.2 电路的设计9.7.3 电路的C51程序代码第10章 C5l单片机典型模块实例10.1 典型外部ROM和RAM器件的使用10.1.1 实例功能10.1.2 器件和原理10.1.3 电路10.1.4 程序设计10.2 液晶显示和驱动实例10.2.1 实例功能10.2.2 器件和原理10.2.3 电路lO.2.4 程序设计10.3 用A/D芯片进行电压测量10.3.1 实例功能10.3.2 器件和原理10.3.3 电路10.3.4 程序设计lO.4 使用DSl820进行温度补偿和测量10.4.1 实例功能10.4.2 器件和原理10.4.3 电路10.4.4 程序设计10.5 语音芯片在单片机系统中的使用10.5.1 实例功能10.5.2 器件和原理10.5.3 电路10.5.4 程序设计10.6 时钟芯片在单片机系统中的应用10.6.1 实例功能10.6.2 器件和原理10.6.3 电路10.6.4 程序设计10.7 单片机中滤波算法的实现10.8 信号数据的FFT变换。
8051内部资源的C编程 中断一.中断源二.中断的控制1.中断允许寄存器IE2.中断优先级寄存器IP三.中断响应定时器/计数器(T/C)一.与T/C有关的特殊功能寄存器1.计数寄存器TH和TL2.T/C控制寄存器TCON3.T/C的方式控制寄存器TMOD4.T/C2的方式控制寄存器:暂不介绍 二.T/C的工作方式1.方式02.方式13.方式24方式35.T/C2的工作方式三.定时器/计数器的初始化1.初始化步骤2.计数初值的计算串行口一.与串行口有关SFR1.串行口控制寄存器SCON2.电源控制寄存器PCON二.串行口的工作方式1.方式02.方式l:3.方式2和方式3三.串行口初始化1.串行口波特率2初始化步骤中断所谓中断,是指当计算机执行正常程序时,系统中出现某些急需处理的异常情况和特殊请求,这时CPU暂时中止现行程序,转去对更紧迫事件进行处理,处理完毕后,CPU自动返回原来的程序继续执行。
中断是一种常见的编程方法,如利用定时器0或定时器1的中断作为系统时间参考;利用外部中断INT0或INT1作为键盘按键中断处理等等。
中断处理函数以一下形式书写: void int_t0(void) interrupt 1 {}8051单片机有5个或更多中断源,有两个中断优先级,每个中断源的优先级可以编程控制,中断允许受到CPU"开中断位"(在C51的表达示EA)和"中断源开中断位"的两级控制。
一,中断源中断源是指任何引起计算机中断的事件来源,一个CPU允许有多个中断源。
8051系列单片机至少有五个可能的中断(8052有6个,其他系列成员最多可达15个)。
8051单片机的五个中断源是:外部中断请求0,由INT0\(P3。
2)输入;外部中断请求1,由INT0\(P3。
2)输入;片内定时器/计数器0溢出中断请求;片内定时器/计数器1溢出中断请求;片内串行口发送/接受中断请求。