毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 论文 >> 正文

PIC单片机及FPGA实验系统设计 第22页

更新时间:2009-6-4:  来源:毕业论文
PIC单片机及FPGA实验系统设计 第22页
EndOfInt       ;中断服务出口
;----------现场恢复----------
   clrf STATUS
   movf status_temp,w
   movwf STATUS
   swapf w_temp,f  ;在不影响状态寄存器的情况下恢复W寄存器
   swapf w_temp,w
;---------现场恢复结束-------
   retfie
;---------中断返回,GIE自动为------
main
   banksel SSPSTAT
   clrf SSPSTAT   ;smp=0,CKE=0,设定从模式,时钟沿选择
   movlw 06H    ;设定引脚功能
   movwf ADCON1   ;设置ADCON1,关闭所有的模拟输入引脚
   bsf  TRISA,5   ;确保SS为输入
   clrf TRISB   ;PORTB为输入
   movlw 0dfH   ;SDO为输出,SDI为输入,SCK为输入
   movwf TRISC   ;设置C口输出方向
   bsf  PIE1,SSPIE  ;允许SSP中断
   clrf STATUS   
   clrf INTCON   ;禁止其他中断
   clrf PIR1   ;清除中断标志
   clrf PORTB   ;PORTB输出复位
   movlw 24H    ;CKP=0,SSPEN=1,SPI从模式带SS控制
   movwf SSPCON   ;设置SSP工作模式
   movlw 0AAH
   movwf SSPBUF   ;送入SSPBUF,等待主机启动SPI通信
   bsf  INTCON,PEIE  ;外围功能模块中断允许
   bsf  INTCON,GIE  ;总中断允许
loop  
   nop      ;程序主循环,等待中断
   goto loop
;-------------程序结束-------------
   end      
附录(十三):密码锁程序:dianzisuo.C
//综合例子,利用4×4键盘和数码管实现密码锁
//8位数码管显示,初始化时显示P。。,接着输入最大6位数的密码。当密码输入完成后,
//按下确认键,进行密码比较,然后给出相应信息。在输入密码过程中,显示器只显示‘8。‘当数字输入超过6个时候
//发出报警信号。在密码输入过程中,若输入错误,可以利用“DEL”删除刚刚输入的错误的数字
#include<pic.h>
unsigned char ps[]={1,2,3,4,5};            //输入密码定义
unsigned char code dispbit[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};  //位选择定义
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x6f,  //显示码
        0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x40,
        0x73,0xff};
unsigned char dispbuf[8]={18,16,16,16,16,16,16,16};  //显示位存储
unsigned char dispcount=0;        //显示位变量
unsigned char flashcount=0;        //次数
unsigned char key;          //键值定义
unsigned char keycoun=0;        //按下次数确定
unsigned char pslen=5;        //ENTER按下时比较变量
unsigned char getps[6];         //输入密码存储
bit keyoverflag;           //键溢出标志位
bit errorflag;            //输入出错标志位
bit rightflag;            //输入正确标志位                                  
//子函数声明
void delay(unsigned char z);  //可调延时子程序
void T0_initial(void);    //T0初始化子程序
void keyscan(void);     //键盘扫描子程序
void key_chuli(void);    //按键处理子程序
void display(void);     //显示子程序
void keyover(void);     //键溢出处理程序
void error_right(void);    //出错处理子程序
void alarm(void);     //报警子程序
void main(void){     //主程序
 unsigned char i,j;
 T0_initial();
 while(1){
  keyskan();
  keychuli;
  
 }
}
void delay(unsigned char z){
 unsigned char i,j;
 for(i=0;i<20;i++){
  for(j=0;j<50;j++){
  }
 }
}
void T0_Intial(void){  //中断产生16ms延时
 OPTION=0x05;   //设定分频比为1:64
 T0IF=0;
 T0IE=1;
 GIE=1;
}
void keycan(void){
 unsigned char temp,x,y,z;
 TRISD=0xf0;
 PORTD=0xf0;
 temp=PORTD & 0xf0;
 if (temp!=0xf0){
  delay();
  temp=PORTD & 0xf0;
  if (temp!=0xf0){
   keycount++;
   x=temp;
   TRISD=0x0f;
   PORTD=0xf0;
   temp=PORTD & 0x0f;
   y=temp;
   z=x|y;
   switch(z){
    case 0xe1:k=7;break;
    case 0xe2:k=8;break;
    case 0xe4:k=9;break;
    case 0xe8:k=10;break;
    case 0xd1:k=4;break;
    case 0xd2:k=5;break;
    case 0xd4:k=6;break;
    case 0xd8:k=11;break;
    case 0xb1:k=1;break;
    case 0xb2:k=2;break;
    case 0xb4:k=3;break;
    case 0xb8:k=12;break;

 << 上一页  [21] [22] [23] [24] [25] [26] [27] [28] 下一页

PIC单片机及FPGA实验系统设计 第22页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©chuibin.com 优文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。