您的位置:首页单片机PIC单片机
内容搜索:
阅读内容
背景:#EDF0F5 #FAFBE6 #FFF2E2 #FDE6E0 #F3FFE1 #DAFAF3 #EAEAEF 默认  

PIC单片机驱动RT1602C程序

[日期:2008-08-20 ] [来源:net 作者:未知] [字体: (投递新闻)

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
         MOVWF   WBUF
         MOVF    STATUS, W
         MOVWF   STATUSBUF 
         MOVF    PCLATH, W
         MOVWF   PCLATHBUF
         MOVF    FSR, W
         MOVWF   FSRBUF         
         ENDM
;-------pop special register----------         
POP_REG  MACRO
         MOVF    FSRBUF, W
         MOVWF   FSR
         MOVF    PCLATHBUF, W
         MOVWF   PCLATH
         MOVF    STATUSBUF, W
         MOVWF   STATUS
         MOVF    WBUF, W
         ENDM
;-------MACRO FOR interrupt push and pop special register end------- 

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

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

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

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

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

阅读:
录入:petta

推荐 】 【 打印
本文评论
      全部评论
发表评论


点评: 字数
姓名:
站长推荐