码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • PIC单片机5——串口 中断


    //10M晶振 波特率9600 BRG8位波特率发生器 异步模式
    #include "p18f458.h"
    #include "mydelay.h"

    #pragma config OSC=HS,WDT=OFF,LVP=OFF,DEBUG=ON

    void PIC18F_High_isr(void);/*中断服务函数声明*/
    void PIC18F_Low_isr(void);
    void usart_tx(unsigned char ch);
    unsigned char usart_rx();

    #pragma code high_vector_section=0x8
    void high_vector (void)
    {
        _asm goto PIC18F_High_isr _endasm
    }

    #pragma code low_vector_section=0x18
    void low_vector (void)
    {
        _asm goto PIC18F_Low_isr _endasm
    }

    #pragma code

    #pragma interrupt PIC18F_High_isr
    void PIC18F_High_isr (void)
    {
      PORTB=RCREG;
      usart_tx(RCREG+1);
    }

    #pragma interruptlow PIC18F_Low_isr
    void PIC18F_Low_isr (void)
    {
        PORTBbits.RB4=~PORTBbits.RB4;
        INTCON3bits.INT2IF=0;/*清除中断标志*/
    }

    void usart_tx(unsigned char ch)
    {
      while (!TXSTAbits.TRMT);
      TXREG=ch;
      while(!PIR1bits.TXIF);
    }
    unsigned char usart_rx()
    {
      while(!PIR1bits.RCIF);
      return RCREG;
    }
    void printstr(const rom char *str)
    {
      while(*str)
      {
        if(*str=='\n')//回车
        {
          usart_tx(0x0d);
          usart_tx(0x0a);
        }
           
        usart_tx(*str);
        str++;
      }
    }
    void main()
    {
      char k;
      //ADCON1=0b00001111;/*设置所有双用口为普通数字口*/
      //CMCON=0b00000111;/*关闭所有比较器*/
      //INTCON2bits.RBPU=0;/*开启B口弱上拉*/
      TRISB=0x00; //B口输出
      PORTB=0xff;
     
      RCSTAbits.SPEN=1;//使能串口
      TXSTAbits.SYNC=0;//设置为异步模式
      TXSTAbits.BRGH=1;//高速模式
      SPBRG=64;//波特率9600   10000000/9600/16-1
      RCSTAbits.CREN=1;//使能接收
      TXSTAbits.TXEN=1;//发送使能
     
      IPR1bits.RCIP=1;//高优先级
      PIE1bits.RCIE=1;//串口中断使能
      INTCONbits.PEIE=1;//外设中断使能
      INTCONbits.GIE=1;//开启中断
     
      while(1)
      {
        //if(PIR1bits.RCIF==1)
          //PORTB=RCREG;
        printstr("asdfg");
        for(k=0;k<10;k++)
          delay();
      }
     
    }

    完整资料打包(含仿真):

    PIC单片机1-5程序及仿真合集-单片机文档类资源-CSDN下载

  • 相关阅读:
    Mysql中自增主键是如何工作的
    SAP UI5 sap.ui.core.Element 的概要介绍
    单点登录以及实现(前后端分离和前后端不分离方式)
    算法竞赛进阶指南 0x67 Tarjan 算法与有向图连通性
    spring中如何使用作业调度框架Quartz呢?
    一行代码解决WINFORM因为系统放大导致的布局混乱
    【设计模式-2】策略模式 - 避免冗余的if-else判断
    通过一道简单的累加题,加深对C++匿名对象,static静态函数静态变量,构造函数,内部类的理解
    Go语言 Map教程
    mysql迁移以及迁移后配置文件的编写
  • 原文地址:https://blog.csdn.net/fengyuzhe13/article/details/128084478
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号