新闻  |   论坛  |   博客  |   在线研讨会
PIC单片机的子程序
victorchen | 2007-10-10 11:18:52    阅读:2265   发布文章

;********************************************************** ;名称:写EEPROM ;目的:写进EEPROM的数据 ;入口: EEADRBUF(存放数据地址)EEDATBUF(存放数据) ;出口:无 ;********************************************************** MOVLW DATA ;修改数值 MOVWF EEDATBUF MOVLW ADR ;修改数值 MOVWF EEADRBUF BANKSEL EEADRBUF ;选BANK MOVF EEADRBUF,0 ;送地址 BANKSEL EEADR ;选BANK MOVWF EEADR ; BANKSEL EEDATBUF ; MOVF EEDATBUF,0 ;送数据 BANKSEL EEDATA ;选BANK MOVWF EEDATA ; ; BANKSEL EECON1 ;选BANK BCF EECON1,7 ;POINT DATA BSF EECON1,2 ;写enable ; BCF INTCON,7 MOVLW H'55' MOVWF EECON2 MOVLW H'AA' MOVWF EECON2 ; BSF EECON1,1 ;开始写 BTFSC EECON1,1 ;写操作是否完成 GOTO $ - 1 BCF EECON1,2 ;写保护 BANKSEL EEDATBUF ;选BANK0 RETURN ;*********************************** ;名称:读EEPROM ;目的:读出EEPROM中XXXXH存放的数据 ;入口: EEADRBUF(存放地址) ;出口:EEDATBUF(存放数据) ;*********************************** MOVLW ADR ;修改数值 MOVWF EEADRBUF BANKSEL EEADRBUF ;选BANK MOVF EEADRBUF,0 ;送地址 BANKSEL EEADR ;选BANK MOVWF EEADR ; BANKSEL EECON1 ;选BANK BCF EECON1,7 ;POINT DATA BSF EECON1,0 ;开始读 BANKSEL EEDATA MOVF EEDATA,0 ;EEDAT TO W BANKSEL EEDATBUF ;选BANK0 MOVWF EEDATBUF ; RETURN ;*********************************** ;名称:ADC ;目的:模拟数值转换为数字数值 ;入口: ADCON0,ADCON1 ;出口:ADERS(模拟信号的数值) ;*********************************** ADC BANKSEL PIR1 ;Bank 0 MOVLW DATA? MOVWF ADCON0 ;左对齐,RB5为输入 ;AD转换初始化 BANKSEL PIE1 ;Bank 1 MOVLW DATA? ;外部时钟为4M MOVWF ADCON1 ;时钟频率为Fosc/8 BANKSEL PIR1 ;Bank 0 BCF PIR1,6 ;清AD中断标志位 CALL DEL300MS BSF ADCON0,1 ;启动转换 BTFSC ADCON0,1 ;转换结束 GOTO $-1 BCF ADCON0,0 ;关闭AD RETURN ;******************************************************** ;子程序名称:KEYSCAN ;功能:查询按键 ;入口:KEY0-KEY7 ;出口:FALG的相应位为1 ;******************************************************** KEYSCAN ;清标志位清 CLRF FLAG KEY0 ;按键0 BTFSC KEY0? GOTO KEY1 CALL DEL120MS BTFSC KEY0? GOTO KEY1 KEY0A ;按键释放 BTFSC KEY0? GOTO KEY0B GOTO KEY0A KEY0B ;按键确定 BSF FLAG,0 GOTO KSOUT KEY1 ;按键1 BTFSC KEY1? GOTO KEY2 CALL DEL120MS BTFSC KEY0? GOTO KEY2 KEY1A ;按键释放 BTFSC KEY1? GOTO KEY1B GOTO KEY1A KEY1B ;按键确定 BSF FLAG,1 GOTO KSOUT KEY2 ;按键2 BTFSC KEY2? GOTO KEY3 CALL DEL120MS BTFSC KEY2? GOTO KEY3 KEY2A ;按键释放 BTFSC KEY2? GOTO KEY2B GOTO KEY2A KEY2B ;按键确定 BSF FLAG,2 GOTO KSOUT KEY3 ;按键3 BTFSC KEY3? GOTO KEY4 CALL DEL120MS BTFSC KEY3? GOTO KEY4 KEY3A ;按键释放 BTFSC KEY3? GOTO KEY3B GOTO KEY3A KEY3B ;按键确定 BSF FLAG,3 GOTO KSOUT KEY4 ;按键4 BTFSC KEY4? GOTO KEY5 CALL DEL120MS BTFSC KEY4? GOTO KEY5 KEY4A ;按键释放 BTFSC KEY4? GOTO KEY4B GOTO KEY4A KEY4B ;按键确定 BSF FLAG,4 GOTO KSOUT KEY5 ;按键5 BTFSC KEY5? GOTO KEY6 CALL DEL120MS BTFSC KEY5? GOTO KEY6 KEY5A ;按键释放 BTFSC KEY5? GOTO KEY5B GOTO KEY5A KEY5B ;按键确定 BSF FLAG,5 GOTO KSOUT KEY6 ;按键6 BTFSC KEY6? GOTO KEY7 CALL DEL120MS BTFSC KEY6? GOTO KEY7 KEY6A ;按键释放 BTFSC KEY6? GOTO KEY6B GOTO KEY6A KEY6B ;按键确定 BSF FLAG,6 GOTO KSOUT KEY7 ;按键7 BTFSC KEY7? GOTO KEY8 CALL DEL120MS BTFSC KEY7? GOTO KEY8 KEY7A ;按键释放 BTFSC KEY7? GOTO KEY7B GOTO KEY7A KEY7B ;按键确定 BSF FLAG,7 GOTO KSOUT KEY8 BSF FLAG,8 ;没有按键置零位 GOTO KEYOUT KSOUT CALL BELL KEYOUT RETURN

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
qingcai [ 匿名]  2008-10-11 07:45:13 

qingcai [ 匿名]  2008-10-09 12:57:58 

知识的天堂,自由的空间
最近文章
PIC单片机的看门狗
2007-11-15 13:20:54
PIC单片机的子程序
2007-10-10 11:18:52
推荐文章
最近访客