您当前的位置:五五电子网电子知识单片机-工控设备PIC单片机PIC单片机驱动RT1602C程序 正文
PIC单片机驱动RT1602C程序

PIC单片机驱动RT1602C程序

点击数:7640 次   录入时间:03-04 11:37:43   整理:http://www.55dianzi.com   PIC单片机

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单片机单片机-工控设备 - PIC单片机