




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
所使用编译器的版本,HI-TECH PICC Version 9.50PL1(正版)本例是一个用PIC16F73编写的门禁读卡器解码并显示的源程序;门禁读卡头为韦根26编码格式,数据“0为DATAO线上出现400US的低电平加2000US的高电平; 数据”1为DATA1线上出现400US的低电平加2000US的高电平; 无数据输出时DATA0,DATA1线上为高电平;晶振4MHZ;*LIST P=16F73,R=DEC ;定义器件为16F73,默认数制为十进制#INCLUDE#DEFINE DATE164 PORTA,0 ;定义164数据位#DEFINE CLK164 PORTA,1 ;定义164时钟位 #DEFINE ENABLE164 PORTA,2 ;定义164显示使能位;中断保护寄存器W_TEMP EQU 20H ;W中间寄存器STATUS_TEMP EQU 21H ;STATUS中间寄存器;延时寄存器COUNT0_DELAY EQU 22H ;延时记数用寄存器COUNT1_DELAY EQU 23H ;显示寄存器DATE_ZJ EQU 24H ;显示数据寄存器TEMP_JZ EQU 25H ;显示间址寄存器BZ_TEMP EQU 26H ;刷新标志寄存器COUNT_FMBCD EQU 27H ;发码次数寄存器QIAN EQU 28H ;显示千位寄存器BAI EQU 29H ;百SHI EQU 2AH ;十GE EQU 2BH ;个;移位数据寄存器TEMP_YIWEI EQU 2DH;韦根解码寄存器TEMP_QIAN EQU 30H ;韦根解码数据寄存器TEMP_BAI EQU 31HTEMP_SHI EQU 32HTEMP_GE EQU 33HCOUNT_WG EQU 34H ;韦根数据位数寄存器;-数制转换寄存器DATE_7 EQU 35H DATE_6 EQU 36HDATE_5 EQU 37HDATE_4 EQU 38HDATE_3 EQU 39HDATE_2 EQU 3AHDATE_1 EQU 3BH;- ORG 00H NOP GOTO START;-中断子程序- ORG 04HPBDPZD MOVWF W_TEMP ;现场保护 SWAPF STATUS,0 MOVWF STATUS_TEMP CALL SHUJU_JS;-INEND BCF INTCON,RBIF ;清PORTB中断标志位 SWAPF STATUS_TEMP,W ;恢复中断前STATUS,W的值 MOVWF STATUS SWAPF W_TEMP,1 SWAPF W_TEMP,0 ;(用SWAPF才不会影响STATUS的值) RETFIE;-显示代码表-TB ADDWF PCL,1 RETLW 03H ;0 RETLW 9FH ;1 RETLW 25H ;2 RETLW 0DH ;3 RETLW 99H ;4 RETLW 49H ;5 RETLW 0C1H ;6 RETLW 1FH ;7 RETLW 01H ;8 RETLW 19H ;9 RETLW 11H ;A RETLW 0C1H ;B RETLW 63H ;C RETLW 0A1H ;D RETLW 61H ;E RETLW 71H ;F RETLW 0FFH ;关显示 RETURN;!;-主程序-;! ORG 60HSTART;-寄存器全部清零 MOVLW 20H MOVWF FSRST: CLRF 00H INCF FSR,1 BTFSS FSR,6 GOTO ST ;- BCF STATUS,RP0 ;选体0 BCF STATUS,RP1 ; CLRF PORTA ;清RA,RB,RC口 CLRF PORTB CLRF PORTC;- BSF STATUS,RP0 ;选体1 MOVLW 06H MOVWF ADCON1 ;RA口设置为普通I/O口 MOVLW 00H MOVWF TRISA ;RA口设置为输出口 MOVLW 0FFH MOVWF TRISB ;RB口设置为输入口 MOVLW 06H MOVWF TRISC ;CCP1,CCP2为输入口 BCF STATUS,RP0 ;恢复体0;-程序测试子程序(初始显示1234) MOVLW 01H ;1 MOVWF QIAN MOVLW 02H ;2 MOVWF BAI MOVLW 03H ;3 MOVWF SHI MOVLW 04H ;4 MOVWF GE CALL XIANSHI;- BCF INTCON,RBIF BSF INTCON,RBIE ;开RB口电平中断 BSF INTCON,GIE ;开总中断;*;*主程序内核*MAIN NOP MOVLW 1AH ;设置韦根解码位数 MOVWF COUNT_WG BTFSS PORTB,1 ;判断是否需要移位操作 CALL AJYW BTFSS PORTB,2 ;判断是否需要显示转换 CALL XSZH BTFSC BZ_TEMP,0 ;判断是否需要数制转换 CALL BINZHEX BTFSC BZ_TEMP,1 ;判断是否需要显示刷新 CALL XIANSHI GOTO MAIN;*;=数据接收子程序=SHUJU_JS CLRF TEMP_GE ;清韦根解码数据寄存器 CLRF TEMP_SHI CLRF TEMP_BAI CLRF TEMP_QIAN CLRF TMR1L ;清TMR1寄存器 CLRF TMR1H CLRF T1CON ;TMR1计数分配比1:1 BCF PIR1,TMR1IF ;清TMR1中断标志位;- BTFSS PORTB,6 ;判断数据是0? GOTO SHUJU_JS0L BTFSS PORTB,7 ;判断数据是1? GOTO SHUJU_JS1L GOTO SHUJU_WAN;-数据0SHUJU_JS0L BCF T1CON,TMR1ON ;关闭TMR1 CLRF TMR1L ;清TMR1寄存器 CLRF TMR1H BSF T1CON,TMR1ON ;启动TMR1 BTFSC PIR1,TMR1IF ;如TMR1计数溢出则是错误接收 GOTO SHUJU_WAN BTFSS PORTB,6 GOTO $-3 BCF STATUS,C ;将数据0压入数据寄存器 RLF TEMP_GE,1 RLF TEMP_SHI,1 RLF TEMP_BAI,1 RLF TEMP_QIAN,1 DECFSZ COUNT_WG,1 ;判断26位数据是否接收完毕 GOTO SHUJU_JSH ;未接收完毕则转向测高电平脉宽 GOTO SHUJU_BZ ;数据接收完毕则置刷新标志位;-数据1SHUJU_JS1L BCF T1CON,TMR1ON ;关闭TMR1 CLRF TMR1L ;清TMR1寄存器 CLRF TMR1H BSF T1CON,TMR1ON ;启动TMR1 BTFSC PIR1,TMR1IF ;如TMR1计数溢出则是错误接收 GOTO SHUJU_WAN BTFSS PORTB,7 GOTO $-3 BSF STATUS,C ;将数据1压入数据寄存器 RLF TEMP_GE,1 RLF TEMP_SHI,1 RLF TEMP_BAI,1 RLF TEMP_QIAN,1 DECFSZ COUNT_WG,1 ;判断26位数据是否接收完毕 GOTO SHUJU_JSH ;未接收完毕则转向测高电平脉宽 GOTO SHUJU_BZ ;数据接收完毕则置刷新标志位;-测高电平脉宽SHUJU_JSH BCF T1CON,TMR1ON ;关闭TMR1 CLRF TMR1L ;清TMR1寄存器 CLRF TMR1H BSF T1CON,TMR1ON ;启动TMR1SHUJU_JSH_1 BTFSC PIR1,TMR1IF ;如TMR1计数溢出则是错误接收 GOTO SHUJU_WAN BTFSS PORTB,6 GOTO SHUJU_JS0L BTFSS PORTB,7 GOTO SHUJU_JS1L GOTO SHUJU_JSH_1;-SHUJU_BZ BSF BZ_TEMP,0 ;置数制转换标志位 SHUJU_WAN RETURN;-二进制转十六进制码-BINZHEX BCF BZ_TEMP,0 ;清数制转换标志位 MOVLW 03H ;取TEMP_QIAN的低二位存入DATE_7 ANDWF TEMP_QIAN,0 MOVWF DATE_7;- MOVLW 0F0H ;取TEMP_BAI的高四位存入DATA_6 ANDWF TEMP_BAI,0 MOVWF DATE_6 SWAPF DATE_6,1 MOVLW 0FH ;取TEMP_BAI的低四位存入DATE_5 ANDWF TEMP_BAI,0 MOVWF DATE_5;- MOVLW 0F0H ;取TEMP_SHI的高四位存入DATA_4 ANDWF TEMP_SHI,0 MOVWF DATE_4 SWAPF DATE_4,1 MOVLW 0FH ;取TEMP_SHI的低四位存入DATE_3 ANDWF TEMP_SHI,0 MOVWF DATE_3;- MOVLW 0F0H ;取TEMP_GE的高四位存入DATA_2 ANDWF TEMP_GE,0 MOVWF DATE_2 SWAPF DATE_2,1 MOVLW 0FH ;取TEMP_GE的低四位存入DATE_1 ANDWF TEMP_GE,0 MOVWF DATE_1;- MOVF DATE_7,0 MOVWF QIAN MOVF DATE_6,0 MOVWF BAI MOVF DATE_5,0 MOVWF SHI MOVF DATE_4,0 MOVWF GE;- BINZHEX_WAN BSF BZ_TEMP,1 ;置刷新标志位 RETURN;=移位显示子程序=AJYW CALL DELAY20MS ;延时判断按键的有效性 BTFSC PORTB,1 GOTO AJYW_WAN ;是干扰则返回主程序 BTFSS PORTB,1 ;判断按键是否松开 GOTO $-1 MOVF QIAN,0 ;进行移位操作 MOVWF TEMP_YIWEI MOVF BAI,0 MOVWF QIAN MOVF SHI,0 MOVWF BAI MOVF GE,0 MOVWF SHI MOVF TEMP_YIWEI,0 MOVWF GE BSF BZ_TEMP,1 ;置刷新标志位AJYW_WAN RETURN ;=显示转换子程序=XSZH CALL DELAY20MS ;延时判断按键的有效性 BTFSC PORTB,2 GOTO XSZH_WAN ;是干扰则返回主程序 BTFSS PORTB,2 ;判断按键是否松开 GOTO $-1;- BTFSC BZ_TEMP,2 ;判断韦根显示标志位 GOTO XSZH_1;-显示韦根数据的低三位 BSF BZ_TEMP,2 ;韦根显示标志位取反 MOVF DATE_1,0 MOVWF GE MOVF DATE_2,0 MOVWF SHI MOVF DATE_3,0 MOVWF BAI MOVLW 10H MOVWF QIAN GOTO XSZH_2;- 显示韦根数据的高四位XSZH_1 BCF BZ_TEMP,2 ;韦根显示标志位取反 MOVF DATE_7,0 MOVWF QIAN MOVF DATE_6,0 MOVWF BAI MOVF DATE_5,0 MOVWF SHI MOVF DATE_4,0 MOVWF GE;-XSZH_2 BSF BZ_TEMP,1 ;置刷新标志位XSZH_WAN RETURN ;=显示子程序=XIANSHI BCF BZ_TEMP,1 ;清刷新标志位 MOVLW 28H MOVWF TEMP_JZXIANSHI_1 BTFSC TEMP_JZ,2 GOTO XIANSHI_WAN MOVF TEMP_JZ,0 MOVWF FSR MOVF 00H,0 CALL TB MOVWF DATE_ZJ CALL FSBCD INCF TEMP_JZ,1 GOTO XIANSHI_1 XIANSHI_WAN RETURN;*BCD码发送子程序*FSBCD MOVLW 08H ;发送循环次数 MOVWF COUNT_FMBCD BCF ENABLE164 ;关显示 BCF STATUS,0FSBCD_1 BCF CLK164 RLF DATE_ZJ,1 BTFSS STATUS,0 GOTO FSBCD_2 BSF DATE164 GOTO FSBCD_3FSBCD_2 BCF DATE164 NOPFSBCD_3 BSF CLK164 ;产生时钟上升沿 DECFSZ COUNT_FMBCD,1 ;发送完毕否? GOTO FSBCD_1 BSF ENABLE164 ;开显示 RETURN ;=延时20MS子程序=DELAY20MS MOVLW 28H MOVWF COUNT0_DELAYDELAY20MS_1 MOVLW 5DH MOVWF COUNT1_DELAY DECFSZ COUNT1_DELAY,1 GOTO $-1 DECFSZ COUNT0_DELAY,1 GOTO DELAY20MS_1 RETURN;- ENDPIC16F73的遥控器程序默认分类 2008-04-28 09:51:38 阅读29 评论0 字号:大中小订阅 include COUNT EQU 20HCOUNT1 EQU 21HCOUNT2 EQU 22H ADDRES EQU 23H SENDBUF EQU 24H ;存键值TXBUF EQU 25HMM EQU 26H ;10MS DELAYNN EQU 27HAA EQU 28H ; DELAY1BB EQU 29HTVDATA EQU 2AH ;= ORG 10HSTART BSF STATUS,RP0 MOVLW B11111111 ;RA4频道下翻 MOVWF TRISA MOVLW B00000001 MOVWF TRISB ;RB0频道上翻 RB1 LED MOVLW B11111110 MOVWF TRISC ;RC0 红外输出BCF STATUS,RP0 ; BCF PORTC,0 ;红外输出口 BSF PORTB,1 ;复位时RB1 LED闪二下,表示工作正常。CALL DELAY1BCF PORTB,1CALL DELAY1BSF PORTB,1CALL DELAY1BCF PORTB,1CALL DELAY1;=键扫描=MAIN BTFSS PORTB,0 ;RB0频道上翻 GOTO SCHUP ;PORTB常态是高电平,低电平有键按下。BTFSS PORTA,4 ;RA4频道下翻 GOTO SCHDOWN GOTO MAIN ;=频道上翻=SCHUP CALL DELAY ;键去抖BTFSC PORTB,0 GOTO MAIN BTFSS PORTB,0 ;键释放?GOTO $-1BSF PORTB,1;MOVLW B00110100 ;TV ADRESS(写入自己的彩电地址码)MOVWF ADDRESMOVLW B00000001 ;TV DATAMOVWF TVDATACALL SEND ;发送一次红外信号MOVLW B00110100 ;TV ADRESSMOVWF ADDRESMOVLW B00000001 ;TV DATAMOVWF TVDATACALL SEND ;发送一次红外信号GOTO MAIN;=频道下翻=SCHDOWN CALL DELAY ;键去抖BTFSC PORTA,4 GOTO MAIN BTFSS PORTA,4 ;键释放?GOTO $-1BSF PORTA,4;MOVLW B00110100 ;TV ADRESSMOVWF ADDRESMOVLW B00000010 ;TV DATAMOVWF TVDATACALL SEND ;发送一次红外信号MOVLW B00110100 ;TV ADRESSMOVWF ADDRESMOVLW B00000010 ;TV DATAMOVWF TVDATACALL SEND ;发送一次红外信号GOTO MAIN;=发送8.07mS+4.0MS组成的头码= (一般是9MS+4.5MS)SEND MOVLW 0XFFCALL POUSE MOVLW 0X34 CALL POUSE ;4.0MS MOVLW 0XC8 CALL DELAY2 ;=发送地址= MOVF ADDRES,0 CALL TVADDRESS;=中间插一断560uS+4MS低= MOVLW 0X14 CALL POUSE MOVLW 0XC8 CALL DELAY2 ;=发送数据= MOVF TVDATA,0 CALL TVADDRESS;=结尾560US POUSE+22.7MS低电平= MOVLW 0X13 CALL POUSE BCF PORTC,0 CALL DELAY ;3MSCALL DELAY ;3MSCALL DELAY ;3MSCALL DELAY ;3MSCALL DELAY ;3MSCALL DELAY ;3MSCALL DELAY ;3MSRETURN ;=560uS 高38K频=POUSE MOVWF COUNT ;560uS=0X14K38 BSF PORTC,0 ;(0XFF+ 0X34)*26.9=8.07mS NOP ;(0XFF+ 0X4E)*26.9=9mS NOP NOP NOP NOP NOP NOP NOP NOP NOP BCF PORTC,0 NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP DECFSZ COUNT,1 GOTO K38RETURN;=发送TV地址和数据码= TVADDRESS MOVWF TXBUF ;注意PC示波器先收到的是低位! MOVLW 0X08 MOVWF COUNT1TLP BTFSC TXBUF,0 ;地址码为0就发0,为1就发1。 GOTO IDONE;=TV 发送0子程序= MOVLW 0X14 MOVWF COUNT ; 560uSTVZERO BSF PORTC,0 NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP BCF PORTC,0 NOP NOP NOP NOP NOP NOP NOP NOP
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国际物流建筑方案设计案例(3篇)
- 网约车司机安全知识培训课件
- 网红烟花安全知识培训内容课件
- 有意思的课件
- 有几只小鸟课件
- 中学生物信息化教学设计方案
- 达州建筑方案设计招聘(3篇)
- 初步设计包括建筑方案设计(3篇)
- 成都建筑方案设计排名(3篇)
- 幼儿园中班健康教案《凉拌豆腐》
- DZ∕T 0213-2020 矿产地质勘查规范 石灰岩、水泥配料类(正式版)
- 学校食堂食材采购询价方案范文(35篇)
- 2023年广西现代物流集团社会招聘、校园招聘考试真题及答案
- 保险公司案件风险排查工作报告
- 《化妆品技术》课件-化妆品的历史起源与发展
- 《建筑施工安全检查标准》JGJ59-20248
- 住宅公共部分装修综合项目施工专项方案
- 安徽医科大学辅导员考试试题2024
- 《合理利用网络作业设计方案-2023-2024学年初中道德与法治统编版》
- 皮肤病真菌感染性皮肤
- JJF1059.1测量不确定度评定培训讲演稿
评论
0/150
提交评论