欢迎来到天天文库
浏览记录
ID:15800575
大小:1.17 MB
页数:22页
时间:2018-08-05
《《pic16系列单片机c程序设计与proteus仿真》学习》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、《PIC16系列单片机C程序设计与proteus仿真》学习之一----RB0/INT中断编程//用RB0/INT按键,每按一下,LED翻转亮,晶振4MHZ#include//#include__CONFIG(0x3f71);//配置为设定:XT,WDT,off等#defineLEDRB1//所有有LED字符的地址实际上是RB1charA;//全局变量,保存LED的状态voidDELAY(unsignedint);voidinterruptISR(void);voi
2、dmain(){OPTION=0b00000000;//B口弱上拉,RB0为下降沿触发中断TRISB=0b00000001;//设定RB0为输入,RB1为输出(置1为输入,置0为输出)INTCON=0B10010000;//允许RB/INT中断LED=1;//RB1=1,先让LED灯亮A=1;while(1);//原地等待中断}//-------delaynmsvoidDELAY(unsignedintn){unsignedintj;chark;for(j=0;j0
3、;k--)NOP();}//----interruptisrvoidinterruptISR(void){if(INTF==1)//如果是INT中断才执行以下程序{DELAY(30);//先延时消抖INTF=0;//消抖后才将INT中断标志清零if(A==1){A=0;LED=0;}else{A=1;LED=1;}}}-------------------------------------------------PROTEUS如下:PS:详情请参考《PIC系列单片机设计与PROTEUS仿真》一书P11
4、4/**用TMR0延时中断,产生脉冲**//**设定时器TMR0延时10MS,8位pic单片机晶振4MHZ,则指令周期Tcy=1us,计算如下:1.设预分频比为K,则256*K*Tcy=10_000us,得K=39.06,要取大于此值的最小分频比,即K=642.计算延时常数X,(256-X)*64*Tcy=10_000us,得X=99.75,四舍五入取整,得X=100.*/#include__CONFIG(0x3f71);#defineLEDRB0#defineT0_10MS100//定义
5、TMR0延时10MS的时间常数charA;voidinterruptISR(void);voidmain(void){RISB0=0;//设定RB0位输出,其余B口未设置,采用上电默认值,为输入OPTION=0b10000101;//RBPU=1:B口上拉使能,INTEDG=0:下降沿触发,T0CS=0:对内部指令周期计数,T0SE=0:RA4/T0CKI的上升沿计数,PSA=0:预分频分配位给TMRO,PS2PS1PS0=101:TMR0比率为1:64INTCON=0b10100000;//GIE=1
6、:允许全局中断使能,PEIE=0:禁止外设中断使能,T0IE/TMR0IE=1:允许TMR0溢出中断使能,INTE=0:禁止INT引脚中断使能//RBIE=0:禁止RB口高4位电平变化使能,T0IF/TMR0IF=0:TMR0溢出中断标志位--未溢出//INTF=0:未发生INT中断,RBIF=0:RB7:RB4引脚的逻辑状态未发生变化TMR0=T0_10MS;//TMR0赋初值LED=1;A=1;while(1);//原地等待}voidinterruptISR(void){if(T0IF==1){T0
7、IF=0;TMR0=T0_10MS;//TMR0赋初值,必须if(A==1){A=0;LED=0;}else{A=1;LED=1;}}}proteus如下:(已修改)第一步:初步画好仿真图,设置好PIC参数(晶振,配置位)并运行,如下:第二步:设置ANALOGUEANALYSIS(我们主要看RB0的模拟电压情况),设置方法如下:1.右击---EditGraph---起始时间50m,终止时间150m---OK2.右击---AddTraces---Name为RB0,ProbeP1为RB0---OK3.右击-
8、--EditGraph---SetY-scales---若此时显示为灰色不可输入状态,那就点确定,会弹出一个窗口“Resimulate?”,点击确定,方波图就出来了,不过默认是0~5V,你现在就可以重新修改Y-scales,如下图:先打勾“Lockvalues”,在设置Min-1,Max6----Ok----又会弹出“resimulate?”,确定即可。最后效果图为:示波器图为:若示波器不小心X掉了,可以在运行的状态下(不运行不会出现该选项
此文档下载收益归作者所有