当前位置:首页 > 单片机 > 单片机
[导读] PIC单片机驱动RT1602C程序RT1602C驱动UART串口输出,波特率为19200按键扫描: 键1控制LCD的显示状态,接收状态或是发送状态 键2循环控制UART将要输出的子串口AD转换功能UART串口接收中断TIME1定时器中断

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


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭