VSS使用详解:配置管理工具对比与VisualSourceSafe介绍

需积分: 9 28 下载量 90 浏览量 更新于2024-07-12 收藏 2.12MB PPT 举报
"这篇文章主要介绍了版本控制工具的使用方法,特别是Visual SourceSafe (VSS)。文章提到了版本控制的重要性,以及如何通过这类工具解决研发项目管理中的问题。此外,还对比了其他几种版本控制工具,如Starteam、PVCS Version Manager、ClearCase和CVS。VSS因其简单易用和与微软开发工具的集成而被推崇。" 版本控制是软件开发过程中的关键环节,它允许团队成员协同工作,跟踪和管理项目中的各种文件更改。VSS作为一款流行的配置管理工具,提供版本管理和配置管理功能,确保团队的工作一致性并防止数据丢失。它支持安全保护,具备跟踪检查功能,同时能够与Visual Basic、Visual C++、Visual FoxPro等开发环境无缝集成,也适用于Microsoft Office应用程序。 VSS的基本工作流程包括:在教师机上建立数据库,学生机从该数据库中检出(Checkout)文件至本地进行编辑,然后将编辑后的文件检入(Checkin)回教师机。在工作文件夹中,用户可以直接处理文件,VSS会记录每次的修改,形成修订历史,以便于追溯和恢复错误。 文章提到了其他几种版本控制工具: 1. Starteam:它是一个集版本控制、构建管理和缺陷跟踪于一体的工具,有强大的图形界面,但在管理和维护上可能较为复杂。 2. PVCS Version Manager:MERANT公司的产品,用于各种类型的文件版本管理,支持并行开发。 3. ClearCase (CC):作为ROSE构件的一部分,是顶级的配置管理工具,特别适合复杂的产品发布和分布式团队协作。 4. Concurrent Versions System (CVS):广泛应用于开源软件开发,支持多种平台,是软件开发人员常用的源代码版本管理系统。 通过对比,可以看出每种工具都有其特点和适用场景。VSS因其简单高效和与微软生态的紧密集成,尤其适合小型团队和微软技术栈的项目。 了解和掌握版本控制工具,尤其是VSS的使用方法,对于提升软件开发团队的协作效率和项目管理质量至关重要。正确使用这些工具,可以帮助团队有效地追踪变更、合并代码,以及解决冲突,从而实现更加顺畅的开发流程。

void setupADC() { #define ADCpin GPIO_PORT_P6,GPIO_PIN0 GPIO_setAsPeripheralModuleFunctionOutputPin(ADCpin); // 复位P6.0 ADC12_A_init(ADC12_A_BASE,ADC12_A_SAMPLEHOLDSOURCE_SC, ADC12_A_CLOCKSOURCE_ADC12OSC, ADC12_A_CLOCKDIVIDER_1); //软件触发,内部振荡器MODCLK作为时钟 ADC12_A_enable(ADC12_A_BASE); //启用ADC12_A模块 //设置并启用采样定时器脉冲,这里是使用的软件触发的形式,所以选择失能 ADC12_A_setupSamplingTimer(ADC12_A_BASE,ADC12_A_CYCLEHOLD_16_CYCLES,ADC12_A_CYCLEHOLD_16_CYCLES,ADC12_A_MULTIPLESAMPLESDISABLE); ADC12_A_configureMemoryParam param = {0}; param.memoryBufferControlIndex = ADC12_A_MEMORY_0; //将内存缓冲配置为MEMORY_0 param.inputSourceSelect = ADC12_A_INPUT_A0; //将输入A0映射到内存缓冲区0,因为P6.0引脚对应A0 param.positiveRefVoltageSourceSelect = ADC12_A_VREFPOS_AVCC; //正电压为AVcc param.negativeRefVoltageSourceSelect = ADC12_A_VREFNEG_AVSS; //负电压为AVss param.endOfSequence = ADC12_A_NOTENDOFSEQUENCE; //单通道转换 ADC12_A_configureMemory(ADC12_A_BASE,¶m); // } //----------------------------- r e a d A D C -------------------------------- unsigned long readADC() { //开始从MEMORY_0中进行单通道连续转换 ADC12_A_startConversion(ADC12_A_BASE,ADC12_A_MEMORY_0,ADC12_A_SINGLECHANNEL); while(ADC12_A_isBusy(ADC12_A_BASE) == ADC12_A_BUSY){ // 等待转换完成 } //读取ADC转换之后寄存器的值 long result = ADC12_A_getResults(ADC12_A_BASE, ADC12_A_MEMORY_0); //将其转化为单位为mv的电压值 return (3220 * result) / 4096; // 3320是测量的Vss }

2023-07-17 上传

/* * File: ADC.c * Author: tlfte *AD转换,结果在C口和D口的LED上显示,能进行各种通道选择和参考电压,结果对齐方式选择 * Created on 2018年8月6日, 上午10:07 练习AD结果的计算验证,AD_RESULT=VIN×1023÷VREF,讲解887头文件的作用 */ // PIC16F887 Configuration Bit Settings // 'C' source line config statements // CONFIG1 #pragma config FOSC = XT // Oscillator Selection bits (XT oscillator: Crystal/resonator on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN) #pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled and can be enabled by SWDTEN bit of the WDTCON register) #pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled) #pragma config MCLRE = ON // RE3/MCLR pin function select bit (RE3/MCLR pin function is digital input, MCLR internally tied to VDD) #pragma config CP = OFF // Code Protection bit (Program memory code protection is disabled) #pragma config CPD = OFF // Data Code Protection bit (Data memory code protection is disabled) #pragma config BOREN = OFF // Brown Out Reset Selection bits (BOR disabled) #pragma config IESO = OFF // Internal External Switchover bit (Internal/External Switchover mode is disabled) #pragma config FCMEN = OFF // Fail-Safe Clock Monitor Enabled bit (Fail-Safe Clock Monitor is disabled) #pragma config LVP = OFF // Low Voltage Programming Enable bit (RB3 pin has digital I/O, HV on MCLR must be used for programming) // CONFIG2 #pragma config BOR4V = BOR40V // Brown-out Reset Selection bit (Brown-out Reset set to 4.0V) #pragma config WRT = OFF // Flash Program Memory Self Write Enable bits (Write protection off) // #pragma config statements should precede project file includes. // Use project enums instead of #define for ON and OFF. #include <xc.h> #define _XTAL_FREQ 4000000 //指明时钟晶振为4MHz,使delay宏定义可以正常使用 void CSH(void); unsigned int AD_SUB(char k); void main( ) { unsigned int y; CSH(); while(1) { __delay_ms(100); //每隔100毫秒循环一次 y=AD_

2023-05-24 上传