精华内容
下载资源
问答
  • pic单片机串口通讯

    2011-11-15 00:00:36
    pic单片机串口通用通讯C程序,稍加修改就可应用到的你的工程中
  • pic 单片机 串口通讯

    2010-06-07 16:43:17
    PIC单片机串口通讯,采用C语言,利用串口可以将数据传送给主机,实现通讯
  • PIC单片机串口通讯程序 描述如何使用PIC8位单片机的UART
  • PC单片机串口通讯

    2013-10-31 11:34:36
    PIC写的串口通讯,规约为ModBus,能实现PC机跟单片机的通讯
  • pic单片机485通讯.DOC

    2020-05-16 20:52:25
    开发平台是MPLAB v8.92,PIC单片机入门级材料,比较容易上手,适合单片机初学者,请有兴趣的同学下载
  • 今天记载的是独立开发的串口通信程序,没有利用PIC自带的Example,很适合新手,共同进步。 2.串口通信实例与详解 /********************************************************/ /*Author: Chunxu ...

    1.引子

    团队之所以称之为团队,就意味着多个人在一起共事。需要的是谦虚,谦逊,切勿言之偏偏。也要学会尊重,任何一门编程语言都有自己的优势与不足,否则早就有一门语言一统天下啦!!!我由VB入门,利用C、C++、Java、TCL进行过开发,至今不敢妄言哪种语言最好,只知道把事情做好,才是最成功的。
    耐心与细心,至关重要。最忌浮于事,遇到问题要仔细分析,千万不可抱怨。作为软件出身的傻大个,竟然“沦落”到进行电子线路测试、故障排除、阻抗匹配,不得不说是配合的环节出现了问题,再此感谢一下我的母校——华中大,还好本科管得严,任务重,电子电力的知识还没有忘记。
    今天记载的是独立开发的串口通信程序,没有利用PIC自带的Example,很适合新手,共同进步。

    2.串口通信实例与详解

    /********************************************************/
    /*Author: Chunxu Shen; All Rights Reserved!
    /*Tsinghua University
    /*2016-11-14
    ********************************************************/
    #include <pic.h>
    __CONFIG(0x3ffa);
    
    #define BAUD ???UL      
    #define FOSC ???UL //根据实际情况,自己设定
    #define DIVIDER ((int)(FOSC/(16UL * BAUD) -1))
    
    unsigned int  send1[2] = {0x4f,0x4b}; //'O'=ASCII 0x4f;'K'=ASCII 0x4b; “OK”
    unsigned int  send2[5] = {0x45,0x52,0x52,0x4f,0x52}; //'E'=ASCII 0x45;'R'=ASCII 0x52 “ERROR”
    unsigned char rece;  //全局变量
    unsigned int cnt;    //计数器
    
    void main(void)
    {
    	//初始化端口程序
    	TRISC7 = 1; //RX端口设为输入有效
    	TRISC6 = 0; //TX端口设为输出有效
    	//初始化串口设置
    	SPBRG = DIVIDER;  //波特率设置
    	TXSTA = 0x04;  //异步通讯-禁止发送数据-高速模式
    	RCSTA = 0xA0;  //串口使能-接收单字符-禁止连续接受
    	//中断设计
    	RCIE = 1;  //允许接收信号触发中断
    	GIE = 1;   //打开中断总开关
    	PEIE = 1;  //允许外围设备触发中断
    	//无限循环,等待PC机触发中断
    	while(1)
    	{
    		......
    	}
    }
    
    //接收上位机送发的信号
    void interrupt usart(void)
    {
    	if( RCIE )
    	//RCIE:开放串行中断请求  RCIF:接收中断允许(接收区满or单字符)
    	{
    		......
    	}
    }

    3.心得感悟

    1.“查询”和“中断”哪种方式好?

    这个问题就很奇怪了;其实没有绝对的好与不好。就个人而言,我更偏向于中断,思路比较清晰。无论哪种方式,记住核心就好。中断:采用的是通信外围设备触发(也就是PC机发送信号);而查询方式:采用的是接收移位寄存器溢出标志位以及发送移位寄存器清空的标志位。

    2.为什么在main函数中设置字符数组mplab一直报错?

    这个问题同学问我之后我一直没有答上来,因为我感觉这本身是没有错的。可能是配置的问题。为什么我没有碰到?因为我习惯把字符数组放到程序的预定义处。我也很推崇这种方式,这会大大增强程序的可读性。

    3.通信流程该如何设定?

    单片机通信模块都很相似:端口方向配置(那个是发送数据?哪个是接收数据?);串口状态配置(打开串口?连续发送?同步/异步?);中断配置(打开接收中断触发事件、开启总中断、开启外围中断触发);最后一个是进行数据处理。

    4.TXSTA=0x24;会怎么样?

    TXSTA=0010 0100B;异步-高速-允许发送模式
    就个人而言,不建议这样写。因为接收信号触发中断,如果此时发送还是允许的,容易陷入一直都发送的死区。所以,我们可以试着这样做:“激发信号”触发 中断 ->允许数据发送->发送数据->关闭数据发送。
    展开全文
  • PC机与PIC单片机串行通讯的实现 于万民,王哈力,郑洪平 (哈尔滨理工大学 黑龙江哈尔滨 150040; 2.齐齐哈尔铁路车辆(集团)有限责任公司 黑龙江齐齐哈尔 161002) 随着计算机应用技术和微机网络技术的发展,计算机...
  • 1.前言 PIC16F876a异步串口通信的定义以及寄存器控制,这里不再多谈,前面已经进行过详细的分析。这里注意集中在几个关键点上。...PIC单片机与上位机握手程序如下: /*************************

    1.前言

    PIC16F876a异步串口通信的定义以及寄存器控制,这里不再多谈,前面已经进行过详细的分析。这里注意集中在几个关键点上。

    串口中断服务程序应该注意什么?

    利用串口助手进行调试应该注意什么?

    串口助手接收不到数据的几种可能因素?

    2.实例分析

    PIC单片机与上位机握手程序如下:


    /********************************************************/
    /*Author: Chunxu Shen; All Rights Reserved!
    /*Tsinghua University   2016-11-19
    /*Serial Test Low Speed
    ********************************************************/
    #include <pic.h>
    __CONFIG(0x3ffa);
    
    #define BAUD 9600    
    #define FOSC 9216000L
    #define DIVIDER ((int)(FOSC/(16UL * BAUD) -1))
    
    unsigned char Rece_flag ;  //初始化,串口接受标志
    
    void main(void)
    {
    	//初始化端口程序
    	TRISC7 = 1; //RX端口设为输入有效
    	TRISC6 = 0; //TX端口设为输出有效
    
    	//初始化串口设置
    	SPBRG = DIVIDER;  //波特率设置
    	TXSTA = 0x24;  //内部波特率-8bit-允许发送-异步通讯 空-低速模式-发送寄存器满空-无奇偶校验
    	RCSTA = 0x90;  //串口使能-不接收单字符-允许禁止连续接收
    
    	//中断设计
    	GIE  = 1;   //打开中断总开关
    	PEIE = 1;  //允许外围设备触发中断
    	RCIE = 1;  //允许接收信号触发中断
    	RCIF = 0;
    
    	//等待PC机触发中断
    	while(1)
    	{
    		if('E' == Rece_flag) //对应上位机“结束”按键
    			{//给PC机反馈信号“END”
    				TXREG = 'E';
    				while( TRMT == 0 ) 
    					continue; //检验发送是否结束
    				TXREG = 'N';
    				while(TRMT==0) 	
    					continue;
    				TXREG = 'D';
    				while(TRMT==0)
    					continue; 
    			}
    			else if( 'S' == Rece_flag )
    			{
    				//给PC机反馈信号“OK”
    				TXREG = 'O';
    				while(TRMT==0) 
    					continue;		
    				TXREG = 'K';
    				while(TRMT==0) 
    					continue;				
    			} 
    			else //其他信号不响应
    			{	;	}
    	}
    }
    
    //接收上位机送发的信号
    void interrupt usart(void)
    {
    	if( RCIF )
    	{
    		RCIF = 0;  //软件清零
    		Rece_flag = RCREG; 	
    	}
    }

    3.经验总结

    1.编写中断服务程序时,一定要注意接收中断标志位这个事儿!RCIF这个标志位,硬件不会自动清空。因此,一旦我们编写中断服务程序时,先把RCIF清零!!!

    2.利用串口助手进行调试的时候,关注端口号!!!(计算机->管理->设备管理器->端口)确定你选择的端口是与PIC单片机是相连的,否则即使协议很正确,端口号没对上,也白扯。

    3.波特率很关键,看好高低速,把初值算对很重要。

    4.感想

    曾经下过决心,不碰硬件,可是呢,有的时候你不去做就没有人做,这不得不说是一种悲哀!接下来的软件,瞧!看我飞起~~~


    展开全文
  • PIC低档单片机模拟串口通讯.

    千次阅读 2006-07-12 15:31:00
    串口通讯一般需要单片机串口通讯接口,而此类单片机一般较贵,可否用普通单片机串口通讯?答案是肯定的,但是,通常用于发送数据,接收数据相对就麻烦一些.串口通讯的原理我就不讲了,各位可以去查询相关的书籍,以下是...

    串口通讯一般需要单片机带串口通讯接口,而此类单片机一般较贵,可否用普通单片机做串口通讯?

    答案是肯定的,但是,通常用于发送数据,接收数据相对就麻烦一些.

    串口通讯的原理我就不讲了,各位可以去查询相关的书籍,以下是我做的用于IPOD控制的串口通讯程序.是用普通的PIC12F508单片机实现的.由于我比较穷,没有买IPOD,所以程序是否能正常运作并没有实践过,在此声明.此程序只做抛砖引玉之用.

     ;************************IPOD REMOTE CONTROL PORGRAM**********************************
    ;                   vcc +----V-----+ groud
    ;           PLAY/PAUSE  |       GP0|TxD--->IPOD
    ;                  VOL+ |       GP1|FORWARD>>
    ;                  VOL- |       GP2|REVERSE<<
    ;                       +----------+
    ;  4M InterOTC     1us/Instruction
    ;  9600bps  104us/bit    so 104 cycles/bit   only for G2 Spec
    ;  Rate is 19200 baud (52 cycles /bit @ 4M)  ||| for G3 Spec
    ;  8N1 DATA TRANS FORMAT  0 <--------> 1    (Startbit:0 + 1byte data+Stop bit:1)
    ;  Author: Deng Chunlin.by 2006-3-23.                   mailto: denjackson@163.com
    ;***************************************************************************************
       list      p=12f508           ; list directive to define processor
       #include <p12f508.inc>       ; processor specific variable definitions
       __CONFIG   _CP_ON & _WDT_OFF & _MCLRE_OFF & _IntRC_OSC

    ;*********************************
    ;define varibal and macro
    ;********************************
    GPI0    EQU  6
    TIMER0  EQU 1
    STATUS  EQU 3
    OSCCAL  EQU 5
    w       EQU  H'0000'
    f       EQU  H'0001'
    Z       EQU  H'0002'
    C       EQU  H'0000'
    Tx      EQU  0
    Fw      EQU  1
    Rw      EQU  2
    Vd      EQU  3
    Vp      EQU  4
    Pa      EQU  5
    Txbyte  EQU  7H  ;Trans data register.
    bitcnt  EQU  8H  ;Trans bit counts
    temp    EQU  9H  ; delay temp varibal
    temp2   EQU  10H ; delay temp varial2
    Txipod1 EQU  11H ; command temp1
    Txipod2 EQU  12H ; command temp2

    ;****************************************
       ORG 00H
       NOP
       movwf OSCCAL ;Enter Inter RC OSC Fix tax.
       MOVLW 07H     ;1:256 set to Timer0
       OPTION
       MOVLW B'00111110'     ;GP0 OUT,Other ports In
       TRIS 6
     ;  bcf GPIO,Tx
       goto main
    ;**********************SUB Program Area*******************************


    ;***********************delay sub program*******************************
    ;* delay sub program.
    ; Input register:temp
    ; cycles=3*x+2+2+2=3x+6.
    ;******************************************************************
    UART_delay
         decfsz  temp,f            ;1/2 cycle
         goto UART_delay          ;2 cycles
         retlw 0                  ;2 cycles
    ;******************ipod putchar***************************************
    ;* ipod putchar
    ;* This subroutine transmits the byte stored in the "TXbyte" register
    ;*xxxx Rate is 9600 baud (=104 cycles/bit @ 4MHz) !!! from g2 spec!!
    ;* Rate is 19200 baud (52 cycles /bit @ 4M)  ||| for G3 Spec
    ;* input:     TXbyte
    ;* registers: bitcnt, TXbyte, temp
    ;* stack:     one level (UART_delay)
    ;******************************************************************************
    iputchar
        movlw D'10'
        movwf bitcnt
    iputchar0   
        comf Txbyte,f 
        setc   ;Set C=1
    iputchar1    ;                                                ---         ---                       
        skpc  ; if C=1 then jump else c=0 then jump to iputchar2.  2           1
        goto iputchar2 ;                                                       2
        bcf GPIO,Tx  ; Send a '0'                                  1
        goto iputchar3 ;                                           2
    iputchar2               
        bsf GPIO,Tx ; Send a '1'                                               1
        nop         ;                                                          1
    iputchar3
        movlw D'14' ;                                              1           1
        movwf temp  ;                                              1           1
    ;---------------------------------------------------------------------------------
    il  decfsz  temp,f   ;1/2      
        goto il          ;2
                         ;                                        42          42
    ;---------------------------------------------------------------------------------
        rrf Txbyte,f  ; >> right move a bit. f(0) to c.            1           1
        decfsz bitcnt,f ; 10 bits all are be sended?               1           1
        goto iputchar1 ;not, go on to send left bits.              2           2
        retlw 0
    ;*********************ipod_packet*************************************
    ;* G3 iPod output routine - ipod_packet
    ;*
    ;* Format:  output normally low
    ;*        | output high, 500 uSec
    ;*        | output message @ 8N1, 9600 baud, lsb first
    ;*        | output high 4 extra bits
    ;*    loop| low for ~11.16 mSec
    ;*
    ;*   VOL+             0x55 0x03 0x02 0x00 0x02 0xE9
    ;*   VOL-             0x55 0x03 0x02 0x00 0x04 0xF7
    ;*   SKIP>>           0x55 0x03 0x02 0x00 0x10 0xEB
    ;*   <<SKIP           0x55 0x03 0x02 0x00 0x08 0xF3
    ;*   PLAY/PAUSE       0x55 0x03 0x02 0x00 0x01 0xFA
    ;*   (button release) 0x55 0x03 0x02 0x00 0x00 0xFB
    ;*                                     Txipod1  Txipod2
    ;* input: TXipod1-2 has these bytes --------^^   ^^
    ;* stack: uses 2 stack locations (iputchar > UARTdelay)
    ;**********************************************************************
    ipod_packet
       movlw 0       ;Stop bit.(inverted from 1 to 0)
       movwf Txbyte 
       movlw D'10'   ;send 10 stop bits(500us)??
       movwf bitcnt  ;1 start bit +8 data bits+1 stop bit=10 bits
       call iputchar2 ;alternate entry doesn't have start bit.
       movlw 055H
       movwf Txbyte
       call iputchar
       movlw 03H
       movwf Txbyte
       call iputchar
       movlw 02H
       movwf Txbyte
       call iputchar
       movlw 0
       movwf Txbyte
       call iputchar
      
       movf Txipod1,w
       movwf Txbyte
       call iputchar

       movf Txipod2,w
       movwf Txbyte
       movlw D'14'  ;1 startbit+8 data bits+1 stopbit+4 extra stop bits.
       movwf bitcnt
       call iputchar0
      
       bcf  GPIO,Tx ;bring back down to 0

       movlw D'14'          ;
       movwf temp2          ;
       movlw 0              ; 0-1,will be overflow to 255.
       movwf temp           ;  (774+3)*14~=11ms
    lp1            ; delay about 11ms?
       call UART_delay      ; 256*3+6=774 clock.
       decfsz temp2,f       ;
       goto lp1             ;
       retlw 0
    ;*******************************************************************************
    delay
         clrf TIMER0
    d1s  MOVLW D'255' ;
         SUBWF TIMER0,w ;TIMER0
         BTFSS STATUS,Z ;
         GOTO d1s
         retlw 0
    ;************************main loop******************************************
    ;
    ;
    ;****************************************************************************
    main
        call delay
        btfss GPIO,Fw
        goto fwd
        nop
        nop
        btfss GPIO,Rw
        goto rev
        nop
        nop
        btfss GPIO,Vd
        goto vdo
        nop
        nop
        btfss GPIO,Vp
        goto vpl
        nop
        nop
        btfss GPIO,Pa
        goto pypa
        nop
        goto main
       
      
    fwd
        movlw 010H
        movwf Txipod1
        movlw 0EBH
        movwf Txipod2
        call ipod_packet
        btfss GPIO,Fw
        goto fwd
        goto rel  ;goto release....
    rev
        movlw 08H
        movwf Txipod1
        movlw 0F3H
        movwf Txipod2
        call ipod_packet
        btfss GPIO,Rw
        goto rev
        goto rel  ;goto release....
    vdo
        movlw 04H
        movwf Txipod1
        movlw 0F7H
        movwf Txipod2
        call ipod_packet
        btfss GPIO,Vd
        goto vdo
        goto rel  ;goto release....
    vpl
        movlw 02H
        movwf Txipod1
        movlw 0E9H
        movwf Txipod2
        call ipod_packet
        btfss GPIO,Vp
        goto vpl
        goto rel  ;goto release....
    pypa
        movlw 01H
        movwf Txipod1
        movlw 0FAH
        movwf Txipod2
        call ipod_packet
        btfss GPIO,Pa
        goto pypa
        goto rel  ;goto release....
    rel
        movlw 0
        movwf Txipod1
        movlw 0FBH
        movwf Txipod2
        call ipod_packet
        goto main  
      
       end

     

    展开全文
  • 中、低档PIC单片机有些不带串口,有些虽然有串行口,却受串口固定协议的限制或留作他用,故需用普通I/O口进行通讯。由于中、低档机I/O口数量相对较少,为节省口线,就要用I/O口模拟串行通讯。本文以两片...

    中、低档PIC单片机有些不带串口,有些虽然有串行口,却受串口固定协议的限制或留作他用,故需用普通I/O口进行通讯。由于中、低档机I/O口数量相对较少,为节省口线,就要用I/O口模拟串行通讯。

    本文以两片采用不同主频的PIC单片机(A机时钟频率为6MHz,使用口线RB6;B机时钟频率为4MHz,使用口线RB4)之间用异步通讯方式传送一组数据为例,说明I/O口一线通讯的实现方法。

    一、设计思想

    1.时钟同步问题

    因两个单片机的时钟不同,故采用异步通讯方式。发送、接收一位数据时,采用软件延时,保证发送、接收完全同步。

    2.数据发送、接收方式

    I/O口一线串行通讯,并-串(或串-并)转换用软件完成。将欲发送的字节存于16H中,经移位指令移至进位位。根据进位位的值,将口线RB6置0或1。接收端RB4接收并判断后,置进位标志为0或1,再经移位指令移入14H中。这样循环执行8次,就可将一个字节由低位到高位一位位地发送出去。数据传送速率可用延时循环的方法进行调节。

    3.握手协议

    先发握手信号,后发数据。假定A机为发送,B机为接收。A机开始发送时,先发送一个握手数据信号,B机收到后回送一个应答信号,表示同意接收。

    A机收到应答信号后,开始发送数据。握手信号和数据信号都按异步通讯格式,先发准备信号“1”,接着发送起始位“0”,然后发数据位。

    4.数据传送

    异步通讯时,发送时钟控制数据位的定时移位串行输出,接收时钟检测起始位,并控制数据的定时接收移入。两个时钟信号不是通过信号线传递,而是采用编程约定的办法,使之和实际使用的数据速率基本保持一致,而数据信号中的起始位则是发和收的同步控制。接收时钟为数据传送波特率的16倍频信号,即一个数据位宽的时间内将会出现16个接收时钟的信号,这是检测起始位和保证在数据位中央位置接收数据所需要的。为排除瞬时干扰,在检测到数据输入线的电平由“1”变为“0”之后,接收端将继续检测。仅当连续8个接收时钟周期内都检测到数据线上的电平为“0”时,才确认是起始位,且发送端每一个“0”或“1”都发送16次,接收端将以16倍的时钟周期,即以位宽时间为间隔,接收各数据位(在其中央位置接收数据)。一个字长数据(8位)接收完后,子程序返回。

    二、程序框图和源程序

    下面给出发送、接收一字长(8位)信号的子程序框图(见图1、图2)和PIC单片机源程序(发送、接收联络信号与数据信号相同)。注:所有延时程序略。

    1.发送子程序

    list p=16c65,f=inhx8m

    portb equ6

    trisb equ 16h

    status equ3

    rp0 equ5

    org0x100

    fs bsf status,rp0;选存储体1

    bcf trisb,6 ;置RB6为输出

    bcf status,rp0;恢复存储体0

    bsf portb,6 ;发准备信号“1”

    movlw0x08

    movwf1f ;置发送字长

    call ystb ;延时同步

    movlw0x10

    movwf1c

    fs1 bcf portb,6 ;发16个起始位

    decfsz1c,1

    goto fs1

    ts call ystj ;延时调节波特率

    rrf 16h,1 ;发送字节移位

    btfsc status,0

    goto ty

    movlw0x10

    movwf1c

    fs2 bcf portb,6 ;位为0,发16个“0”

    decfsz1c,1

    goto fs2

    goto tr

    ty movlw0x10

    movwf1c

    fs3 bsf portb,6 ;位为1,发16个“1”

    decfsz1c,1

    goto fs3

    tr decfsz1f, 1

    goto ts ;发送未完,延时发下一位

    return ;发送结束返回

    end

    2.接收子程序

    list p=16c65,f=inhx8m

    portb equ6

    trisb equ 16h

    status equ 3

    rp0  equ5

    org 0x200

    js bsf status,rp0 ;选存储体1

    bsf trisb,4 ;置RB4为输入

    bcf status,rp0 ;恢复存储体0

    js1 btfss portb,4 ;检测收到“1”否

    goto js1 ;未收到“1”继续检测

    movlw0x08 ;置接收字长8位

    movwf1f

    loop1 movlw0x08 ;置循环次数8

    movwf1d

    loop btfsc portb,4 ;检测起始位

    goto loop1 ;未收到“0”重置8次循环

    decfsz1d,1

    goto loop ;收到“0”继续检测

    jz call ystb ;收到8个“0”,延时同步,接收数据

    btfsc portb,4 ;测试接收位

    goto jy

    bcf status,0 ;收到“0”置c=0

    goto j1

    jy bsf status,0 ;收到“1”置c=1

    j1 rrf 14h,1 ;接收位移入14h

    decfsz 1f,1

    goto jz ;未接收完,延时接收下一位

    return ;接收完返回

    end

    c9e83370cf1614795dea18db764e75d7.png

    展开全文
  • Proteus8.9 VSM Studio PIC编译器仿真PIC16F887A_系列002_PC机与单片机双向串口通讯HTC仿真代码和仿真操作实验
  • 前一段时间在微芯官方购买了三块开发板,Pic18F47Q10...3、可以直接使用USB线和单片机进行串口通讯。4、板子的质量工艺很好、沉金。(沉金的板子比普通的要贵数倍!)大家可以看一下的外观。12问题然后说一下在这...
  • 大家好, 通过前一期的学习, 我们已经对ICD2 仿真烧写器和增强型PIC 实验板的使用方法及学习方式有所了解与熟悉,学会了如何用单片机来控制发光管、继电器、蜂鸣器、按键、数码管等资源,体会到了学习板的易用性与...
  • PIC单片机串口通信

    2007-07-25 09:57:04
    pdf文件,接口电路
  • 1.前言 串口通信这个话题对于很多做机电一体化、机器人控制等系统协调的同学,根本不陌生。计算机软件(编程技术),近些年飞速发展。...这一片主要介绍比较完整的串口通信代码,具体为PIC16F876a与上位机
  • 项目: 单线通讯程序//作者://日期:2010年10月18日//功能:两单片机通过一个I/O口实现数据交换//备注://*******************************************************#include "pic....
  • PIC单片机学习—USART串口

    千次阅读 2020-11-27 11:23:13
    最近做了几个项目都用到了PIC单片机,在这几个项目之前我只用到了51单片机和STM32来做控制类的项目,用PIC单片机的时候发现使用的时候和51单片机还是有所区别,有许多小坑需要注意,所以决定写几篇针对新手使用PIC...
  • 用TMR0实现定时查询。任何带中断的PIC上都可以实现。可用此法扩展多个串口
  • PIC单片机-RS232串口通信

    千次阅读 2017-03-04 12:58:49
    在计算机上使用串口大师向开发板发每次发送1个字符。开发板每接收到一个数据,则交换该数据的高低4位,再发送回计算机。 端口初始化时使能发送与接收,使用扫描方式接收数据,接收到数据后立即交换高低四位并发送...
  • 针对PIC32单片机串口部分熟悉,并使用Harmony进行工程配置及数据收发,并结合开发板验证测试。
  • PIC单片机精通_串口通信模块C实现

    千次阅读 2016-11-15 14:33:03
    1.串口通讯头/定义文件 usart.h #ifndef _SERIAL_H_ #define _SERIAL_H_ #define BAUD 9600 #define FOSC 9216000L #define NINE 0 /* Use 9bit communication? FALSE=8bit */ #define DIVIDER ((int)(FOS
  • 基线PIC单片机多数都有内部振荡器。对于时间敏感型应用,如果丢失内部振荡器校准值,就必须对振荡器进行重新校准。本文以PIC10F202为例,研究了一种基于异步串行通信原理,利用接收端的时钟信号,对基线PIC单片机的...
  • 单片机程序串口通讯下载,,,,,,,,,,,,
  • 使用MCGS脚本开发工具自制的驱动文件,通过查看该实例,可快速掌握MCGS通讯驱动的编写方法,是很好的自学实例,推荐下载!
  • PIC单片机入门_异步通讯模式详解

    千次阅读 2016-11-12 13:32:11
    1.USART用于异步通讯详解 1.1 USART的异步工作模式 在异步工作模式下, USART 采用的是标准非归零 ( NRZ编码格式 :一位起始位、8 位或 9 位数据位和一位停止位 )。最常用的数据格式是 8 位。片内专用的 8 位...
  • 简介:上位机通过RS232串口发送消息给下位机,下位机收到消息并做出2个动作: (1)LED灯变化。 (2)将消息通过RS232串口返回给上位机; 上位机收到消息后将内容显示在UI界面上。...PIC单片机...
  • 内部含有两个AD转换程序,并以800ms的时间通过串口想电脑发送数字数据
  • PIC单片机485总线通信

    2018-10-08 12:44:58
    PIc单片机485通讯,基于MODBUS协议,采用protues仿真,有完整的C代码。
  • 单片机串口通信程序的流程方案

    千次阅读 2019-09-21 10:51:42
    在我们设计的早年色选机系统中,单片机程序结构采用固定周期循环的程序结构。固定循环周期是200us。 在这固定的200us时间内处理单片机外围的各种任务,这些任务可以处理...例如PIC系列单片机用UART接口和PC机的232...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 415
精华内容 166
关键字:

pic单片机串口通讯