嗯,我明白了,谢谢大家。我不确定为什么他们在教程中没有初始化它,我想是错误的。以下是教程中的所有代码:******************************************************************************************************************************;造成延迟的一种方法是花时间递减一个值。**********************************************************************************************在汇编中,定时可以被精确编程,因为用户将直接控制如何执行代码。在?C?编译器采用了?C?并将其编译成汇编;将文件创建到实际的PIC MCU(HEX文件)。因为这一点,很难准确地预测一条线需要多少指令。C?DS1以大约1.5秒的速度闪烁;;PIC:16F1829;汇编程序:MPASM v5.43;IDE:MPLABX v1.10;;板:PICkit 3低引脚计数演示板;日期:6.1.2012;;********************************************************************************************************************************参见低引脚计数演示板用户指南对于课程信息*************************************************************************************************************************************************************************************************************************************************************____包括&&<&&&<&&&&&<&&&&&< p p16F1616161616161F1829.ppppp16F1829.inc 969696969696969696969696&_CLKOUTEN_OFF&_IESO_OFF&_FCMEN_OFF);u CON._CONFIG2,(_WRT_OFF&_PLLEN_OFF&_STVREN_OFF&_LVP_OFF);错误级别-302;压缩“不在bank0”警告cblock 0x70;可从所有banksDelay1访问的共享内存位置;为共享内存Delay2结束符中的延迟循环定义两个文件寄存器;-----。----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ovwf OSCCON;将工作寄存器的内容移动到OSCCON bcf TRISC,0;使IO Pin C0成为DS1银行LATC的输出;bank2 clrf LATC;首先关闭所有LED MainLoop: bsf LATC,0;打开DS1 OndelayLoop:decfsz Delay1,f;浪费时间。bra OndelayLoop;内环每循环接受3个指令*256个循环=768个指令decfsz Delay2,f;外环每圈接受另外3个指令*256个循环;内环每秒=768+3)*256=197376个指令/125K指令=1.579秒。关闭LED C0-注意:因为bank2仍然被选择,所以不需要用“banksel”来切换银行:decfsz Delay1,f;与上面文胸OffayLoopdecfszDelay2,f文胸OffayLoop文胸MainLoop相同的延迟;再次这样做……最后,**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************这就是为什么在递减之前不必给Delay1和Delay2变量赋值的原因。“我不认为Delay1和Delay2将自动地在0开始,而不指定一个值,所以Il只是把它分配给0。
嗯,我明白了,谢谢大家。我不确定为什么他们在教程中没有初始化它,我想是错误的。以下是教程中的所有代码:******************************************************************************************************************************;造成延迟的一种方法是花时间递减一个值。**********************************************************************************************在汇编中,定时可以被精确编程,因为用户将直接控制如何执行代码。在?C?编译器采用了?C?并将其编译成汇编;将文件创建到实际的PIC MCU(HEX文件)。因为这一点,很难准确地预测一条线需要多少指令。C?DS1以大约1.5秒的速度闪烁;;PIC:16F1829;汇编程序:MPASM v5.43;IDE:MPLABX v1.10;;板:PICkit 3低引脚计数演示板;日期:6.1.2012;;********************************************************************************************************************************参见低引脚计数演示板用户指南对于课程信息*************************************************************************************************************************************************************************************************************************************************************____包括&&<&&&<&&&&&<&&&&&< p p16F1616161616161F1829.ppppp16F1829.inc 969696969696969696969696&_CLKOUTEN_OFF&_IESO_OFF&_FCMEN_OFF);u CON._CONFIG2,(_WRT_OFF&_PLLEN_OFF&_STVREN_OFF&_LVP_OFF);错误级别-302;压缩“不在bank0”警告cblock 0x70;可从所有banksDelay1访问的共享内存位置;为共享内存Delay2结束符中的延迟循环定义两个文件寄存器;-----。----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ovwf OSCCON;将工作寄存器的内容移动到OSCCON bcf TRISC,0;使IO Pin C0成为DS1银行LATC的输出;bank2 clrf LATC;首先关闭所有LED MainLoop: bsf LATC,0;打开DS1 OndelayLoop:decfsz Delay1,f;浪费时间。bra OndelayLoop;内环每循环接受3个指令*256个循环=768个指令decfsz Delay2,f;外环每圈接受另外3个指令*256个循环;内环每秒=768+3)*256=197376个指令/125K指令=1.579秒。关闭LED C0-注意:因为bank2仍然被选择,所以不需要用“banksel”来切换银行:decfsz Delay1,f;与上面文胸OffayLoopdecfszDelay2,f文胸OffayLoop文胸MainLoop相同的延迟;再次这样做……最后,**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************这就是为什么在递减之前不必给Delay1和Delay2变量赋值的原因。“我不认为Delay1和Delay2将自动地在0开始,而不指定一个值,所以Il只是把它分配给0。
举报