PIC单片机驱动RT1602C程序

发布者:HeavenlySunset最新更新时间:2017-12-07 来源: eefocus关键字:PIC单片机  驱动RT1602C 手机看文章 扫描二维码
随时随地手机看文章

PIC 单片机 驱动RT1602C程序

RT1602C驱动 
UART串口输出,波特率为19200 
按键扫描: 
  键1控制LCD的显示状态,接收状态或是发送状态 
  键2循环控制UART将要输出的子串口 
AD转换功能 
UART串口接收中断 
TIME1定时器中断 
具体请参考硬件连接图,(注意按键部分的硬件设计有些问题,请自行修改,但不影响软件功能)


   你可以学到:

 1.良好的程序书写习惯 

 2. 多任务程序设计基础

 3. 模块化程序设计

  同时,欢迎各路高手指教,谢谢!  


非常抱歉的告诉大家,我的2007年度巨献中可能有一个宏BUG,该BUG是非常难以发现的,

但却存在BUG产生的可能:

在中断进入和退出的压栈和出栈的宏定义原来是这样定义的:

;-------Push special register---------  
PUSH_REG MACRO 
         MOV WF   WBUF 
         MOV F    STATUS, W 
         MOV WF   STATUSBUF  
         MOV F    PCLATH, W 
         MOV WF   PCLATHBUF 
         MOV F    FSR, W 
         MOV WF   FSRBUF          
         ENDM 
;-------pop special register----------          
POP_REG  MACRO 
         MOV F    FSRBUF, W 
         MOV WF   FSR 
         MOV F    PCLATHBUF, W 
         MOV WF   PCLATH 
         MOV F    STATUSBUF, W 
         MOV WF   STATUS 
         MOV F    WBUF, W 
         ENDM 
;-------MACRO FOR interrupt push and pop special register end------- 

        好象在较早的PIC资料上也是这样建议的,但是这样存在一个BUG,

如果主程序刚好做完处理,对标志位Z进行判断前进入中断,那么中断后

的出栈Z位就可能已经被修改了,由语句 MOV F  WBUF,W影响了,为了不影响

出栈后的Z位,只能采用麻烦一点的方式来传送WBUF了,出栈宏如下定义:

;-------Push special register---------  
PUSH_REG MACRO 
         MOV WF   WBUF 
         MOV F    STATUS, W 
         MOV WF   STATUSBUF  
         MOV F    PCLATH, W 
         MOV WF   PCLATHBUF 
         MOV F    FSR, W 
         MOV WF   FSRBUF          
         ENDM 
;-------pop special register----------          
POP_REG  MACRO 
         MOV F    FSRBUF, W 
         MOV WF   FSR 
         MOV F    PCLATHBUF, W 
         MOV WF   PCLATH 
         MOV F    STATUSBUF, W 
         MOV WF   STATUS 
         SWAPF   WBUF, D 
         SWAPF   WBUF, W 
         ENDM


关键字:PIC单片机  驱动RT1602C 引用地址:PIC单片机驱动RT1602C程序

上一篇:pic单片机p18f458上实现发送
下一篇:PIC单片机抗静电放电处理

推荐阅读最新更新时间:2024-03-16 15:48

浅析PIC单片机的时钟设置
什么时钟? 首先我们先讲讲什么是时钟。时钟就是单片机的心脏。每跳动一下。整个单片机的各个电路就同步的动作一下。就好像我们做广播体操的时候 广播上喊的节拍1234 2234 3234。。。。然后我们全部的同学就按照这个节奏进行一个个动作。节拍越快我们动作越快。节拍越慢我们动作的越慢。 内部时钟和外部时钟? PIC单片机有许多型号可以设置成 用外部时钟(如外部接个4MHZ的石英晶振),也可以设置成用内部RC时钟。而且还有许多型号可以选择多种频率的时钟。 如 PICLF1823 内部时钟最高可以到达32MHZ 最低可以达到 31kHz. 这事实上提供了一条降低功耗的新路子。一般的单片机降低功耗常常用的睡眠,而睡眠期间CPU是什么
[单片机]
浅析<font color='red'>PIC单片机</font>的时钟设置
PIC单片机软件开发方法
1 动作标志位的使用 在整个控制中,组合的动作很多,当所有动作定位都通过光电开关控制时,在程序编写上就有一些问题。如要求左手上升到故障位、右手上升到举手位(手初始位置在最下的放下位),光电开关0有效(即为0时是挡住),到达正确位置。用简单的理解可以写成下面的程序: list P=16c73 call lefthandup call righthandup LO call readinsignal bdss csl_v,1efthandligbts call lefthandstop btfsc csl_v,righthandlight4 goto L0 call righthandstop
[单片机]
PIC单片机开发板:数码管动态扫描程序,显示静态效果
//------------------------------------------------------------------------------------------------------------------------- /*这是自已写的:数码管动态扫描,显示静态效果 心得,显示看起来像乱码,实际上是位置不对(要选送段选,再打开位选)的缘故。 改为delay(300);则流水速度加快 */ #include pic.h #define uchar unsigned char #define uint unsigned int __CONFIG(0x3B31);// void delay(uchar x)
[单片机]
<font color='red'>PIC单片机</font>开发板:数码管动态扫描程序,显示静态效果
PIC单片机之I/O控制操作分析
  一、I/O介绍   I/O(input/output),即输入/输出端口。每个设备都会有一个专用的I/O地址,用来处理自己的输入输出信息。CPU与外部设备、存储器的连接和数据交换都需要通过接口设备来实现,前者被称为I/O接口,而后者则被称为存储器接口。   二、I/O控制的主要功能   计算机原理说的是I/O控制器是控制计算机输入输出的一个最基本的控制系统。通过这个控制系统计算机才可以与外界进行交流互动;这个系统包括了计算机最基本的输入功能比如键盘、鼠标等还有计算机最基本的输出功能,打印功能。当然还包括其他的很多很多的计算机其他外部设备。这个系统是计算机比较核心的一个计算机系统了,很是复杂。原因就是连接他的外设很多,计算机系统
[单片机]
<font color='red'>PIC单片机</font>之I/O控制操作分析
pic单片机汇编语言讲解(上)
Pic 单片机为最常用单片机之一,许多程序均基于 pic 单片机进行开发。因此,熟练 pic 单片机编程尤为重要。为保证大家能准确、熟练掌握 pic 单片机的使用,本文特带来 pic 单片机的各种汇编语言指令的讲解上篇,下篇将在后期文章中予以讲解。如果你对本文即将讲解的内容充满兴趣,不妨继续往下阅读哦。 一、pic 的指令系统 pic8 位单片机共有三个级别,有相对应的指令集。基本级 pic 系列芯片共有指令 33 条,每条指令是 12 位字长;中级 pic 系列芯片共有指令 35 条,每条指令是 14 位字长;高级 pic 系列芯片共有指令 58 条,每条指令是 16 位字长。其指令向下兼容。 二、pic 汇编语言指令格
[单片机]
<font color='red'>pic单片机</font>汇编语言讲解(上)
PIC单片机CCS之C语言(#INT_DEFAULT的应用)
#INT_DEFAULT 语法: #int_default 目的:如果PIC触发一个中断且没有设置任何中断标志位, 则下面的函数将被调用.如果有一个中断标志,但一次都没触发,则#int_default函数也可被调用. 例子:#int_default default_isr(){ printf( Unexplained interrupt\r\n );
[单片机]
PIC单片机的第一个例程
今天白天在网上找软件找了好久,在官网下了MPLAB,和PICC还要注册比较麻烦。 今天用的软件Protues仿真的。 第一个程序点亮一盏灯,电路很简单。下面贴出程序。 #include pic.h //包含头文件 int main(void) { TRISB=0x00;//PortB方向寄存器,PortB为输出 while(1) { RB0=0; //PortB.0输出0,点亮LED } } 这里要注意,MPLAB中,项目的目录不能有中文,不然会出错的。刚开始上当了的。
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved