PIC18F452单片机原理及编程实践(第七章)PIC C语言编程.pptVIP

PIC18F452单片机原理及编程实践(第七章)PIC C语言编程.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * 7. 5 C语言的数据串行化 所谓的“数据串行化”是指: 将一个字节的并行数据通过控制器的一个引脚一位一位的传送出去的操作。 实现数据串行化的方法有两种: 使用控制器的串行端口,但这种方式与串口的工作方式有关,往往是固定为一种模式,使用具有局限性,优点是传送时序由串口模块自动控制; 利用控制器的一个引脚,将数据一位一位的向外传送。其中传送的时间间隔由编程者自己掌握。这种方式具有一定的灵活性,使用广泛。 * * 数据串行化举例(一) 编制一个C18程序,通过RC0串行地发送数据44H,先发送LSB位(最低位)。 * * #include p18f458.h #define PC0 PORTCbits.RC0 void main (void) { unsigned char mybyte=0x44, x; unsigned char regALSB; regALSB = mybyte; TRISCbits. TRISC0=0; for (x=0;x8;x++) { PC0= regALSB 0x01; regALSB 1; } } regALSB PC0 * * 数据串行化举例(二) 编制一个C18程序,通过RC0串行地发送数据44H,先发送MSB位(最高位)。 程序完全与例一类似,不同之处在于采用左移操作: for (x=0;x8;x++) { PC0= regALSB 0x01; regALSB 1; } regALSB PC0 * * 数据串行化举例(三) 编制一个C18程序,通过RB0口串行的读入1B字节数据。先读入MSB然后送到RC口输出。 * * # include p18f458.h # define PB0 PORTBbits.RB0 void main (void) { unsigned char x , REGA=0; TRISBbits.TRISB0=1; TRISD=0; for (x=0;x8;x++) { REGA=REGA1; REGA=|PB00x01; } PORTD=REGA; } * * 7. 6 C18程序存储区的配置 将预定义的定值数据(常数)放入程序代码空间(ROM)这是PIC18的常见做法。 同汇编指令去访问ROM中的数据一样,PIC18也可以进行类似的操作。 在PIC18中,与访问ROM操作相关的词有:far 和 near. * * 7. 6.1 RAM数据空间与带码数据空间 在PIC18系统中,共有两个空间可以存储数据: 4096B的数据RAM空间,有些型号并没有达到这个值; 2MB的代码ROM空间。ROM中的程序是依靠程序指针来运行的,如果访问数据是采用“变址”的方法实现; 使用代码空间来存储数据尽管会减少对RAM的负担,但也会减少ROM对指令的使用率; 在PIC18系列中还设EEPROM来存储定值数据的方式(在EEPROM章节中描述)。 * * 7.2.2 端口的位寻址I/O编程 同大多数单片机一样,端口都是可以按位寻址的。 按位寻址的优点是:在处理端口的某一个位时,不会对该端口其它位产生任何影响。 端口位的表达方式如: PORTxbits .Rxy 这里:x代表A、B、C、D、E口中的一个; y代表端口中的某一位(0~7)。 【举例一】:PORTB口的d4位 ------ PORTBbits.RB4 【举例二】:TRISB口的d4位 ------ TRISBbits.TRISB4 * * PIC18 端口的位地址 PORTA PORTB PORTC PORTD PORTE 端口的位 RA0 RA1 RA2 RA3 RA4 RA5 RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7 RC0 RC1 RC2 RC3 RC4 RC5 RC6 RC7 RD0 RD1 RD2 RD3 RD4 RD5 RD6 RD7 RE0 RE1 RE2 D0 D1 D2 D3 D4 D5 D6 D7 * * 位寻址的I/O编程举例(一) 编制一个C18程序:连续翻转RB4,而其它的位不变。 #include p18f458.h #define mybit PORTBbits.RB4 void main (void) { TRISBbits.TRISB4=0; while(1) { mybit=1; mybit=0; } } * * 位寻址的I/O编程举例(二) 编制一个C18程序:监视PC5,若高电平将55H送端口B

您可能关注的文档

文档评论(0)

132****9295 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档