mega128例程

mega128例程
mega128例程

1、流水灯

/*

硬件环境:atmega128开发板

软件环境:CodeVisionA VR-C

*/

#include

#define uchar unsigned char

#define uint unsigned int

uchar cnt;

void timer1_init()

{

TCCR1B=0X00; //先停止定时器1

TCNT1H=0XF0; //设定定时器初值

TCNT1L=0XBE;

TCCR1A=0X00; //启动定时器1

TCCR1B=0X05; //使用1024分频

}

interrupt [TIM1_OVF] void timer1_ovf_isr(void)

{

TCNT1H=0XF0; //重载定时器初值

TCNT1L=0XBE;

DDRE|=1<<2;

PORTE|=1<<2;

DDRA=0xff;

PORTA=cnt; //输出led的值到端口B

cnt++;

if(cnt==255)

cnt=0;

}

void main()

{

//DDRB=0XFF;

SREG|=0X80;

TIMSK=0X04;

timer1_init();

while(1)

{;

}

}

2、AD转换+数码管显示

/***************************************************************************/

/*ADC测试程序*/

/*目标器件:ATmega128 */

/*晶振:RC 8MHZ */

/*编译环境:ICCA VR 7.13A */

/*E-Mail:number007cool@https://www.360docs.net/doc/5913388321.html, */

/*时间:2010年11月13日*/

//Aref接A VCC(+5V),采用Aref作参考电压

/*用数码管显示AD转换的结果*/

/***************************************************************************/

/*********************************包含头文件********************************/

#include

#include

/********************************数码管段码表*******************************/ extern const unsigned char tab[]={0x3f,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,

0x7F,0x6F};

/*********************************全局变量**********************************/ unsigned int adc_rel=0;

/****************************************************************************

函数功能:ADC初始化函数

入口参数:

出口参数:

****************************************************************************/ void adc_init(void)

{

DDRF&=0XFE; //PORTF0设置为输入,即作为ADC0口输入模拟电压

PORTF&=0XFE; //PORTF0设置为输入低电平

ADCSRA=0x00; //关ADC

ADMUX = 0X00; //采用Aref作为参考电压,ADC0单端输入,右对齐

ACSR=(1<

ADCSRA = (1<

//ADEN,启动ADC;ADSC,ADC开始转换;ADIE,ADC中断使能;ADPSx,设置分频因子64 }

/****************************************************************************

函数功能:ADC中断函数

入口参数:

出口参数:

****************************************************************************/

#pragma interrupt_handler adc_isr:iv_ADC

void adc_isr(void)

{

//int data_h,data_l;

//data_l=ADCL;

//data_h=ADCH;

ADCSRA = 0x00;

ADCSRA = (1<

adc_rel=ADC;

/*

if(adc_rel>0x1ff)

{

PORTA|=1<<2;

}

else

PORTA&=~(1<<2);

*/

}

/**************************************************************************** 函数功能:延时子程序

入口参数:

出口参数:

****************************************************************************/ void delay(void)

{

int i;

for(i=0;i<1800;i++);

}

/**************************************************************************** 函数功能:显示子程序

入口参数:k

出口参数:

****************************************************************************/ void display(unsigned int k)//发光二极管显示初始化

{

DDRE|=1<<2;

PORTE|=1<<2;

DDRA=0XFF;

PORTA=k;

}

#define SS 0

#define SCK 1

#define MOSI 2

#define MISO 3

#define SS_H() PORTB|=(1<

#define SS_L() PORTB&=~(1<

#define led0_en() {DDRB|=1<<4;PORTB|=(1<<4);} //开第一个数码管的位选

#define led0_dis() {DDRB|=1<<4;PORTB&=~(1<<4);} //关第一个数码管的位选

#define led1_en() {DDRB|=1<<5;PORTB|=(1<<5);}

#define led1_dis() {DDRB|=1<<5;PORTB&=~(1<<5);}

#define led2_en() {DDRB|=1<<6;PORTB|=(1<<6);}

#define led2_dis() {DDRB|=1<<6;PORTB&=~(1<<6);}

#define led3_en() {DDRB|=1<<7;PORTB|=(1<<7);}

#define led3_dis() {DDRB|=1<<7;PORTB&=~(1<<7);}

#define OE 7

#define point 3

#define dp 7

#include

#include

const unsigned char table[]={0x3F,0x06,0x5B,0x4F,0x66, //0,1,2,3,4

0x6D,0x7D,0x07,0x7F,0x6F, //5,6,7,8,9

0x77,0x7C,0x39,0x5E,0x79,0x71,0x00}; //a,b,c,d,e,f

volatile unsigned char led_buffer[4];

void delay_1us(void) //1us延时函数

{

asm("nop");

}

void delay_nus(unsigned int n) //N us延时函数

{

unsigned int i=0;

for (i=0;i

delay_1us();

}

void delay_1ms(void) //1ms延时函数

{

unsigned int i;

for (i=0;i<1140;i++);

}

void delay_nms(unsigned int n) //N ms延时函数

{

unsigned int i=0;

for (i=0;i

delay_1ms();

}

/*完成spi的初始化*/

void spi_init(void)

{

DDRB |= (1<

SPCR = (1<

/*spi主机传送数据*/

void SPI_MasterTransmit(char Data)

{

/* 启动数据传输*/

SPDR = Data;

/* 等待传输结束*/

while(!(SPSR & (1<

;

}

/*完成对HC595的初始化*/

void HC_595_init(void)

{

DDRC |= (1<

PORTC &= (1<

led_buffer[0]=16; //初始化数码管段码

led_buffer[1]=16;

led_buffer[2]=16;

led_buffer[3]=16;

}

/*HC595完成传送数据*/

void HC_595_OUT(unsigned char data)

{

SS_L();

SPI_MasterTransmit(data);

SS_H();

}

void leddis_update(void)

{

/*最低位数码管,第四个数码管*/

if(point==0)

HC_595_OUT(table[led_buffer[3]]|(1<

HC_595_OUT(table[led_buffer[3]]);

led0_en();

delay_nus(60);

led0_dis();

if(point==1)

HC_595_OUT(table[led_buffer[2]]|(1<

HC_595_OUT(table[led_buffer[2]]);

led1_en();

delay_nus(60);

led1_dis();

if(point==2)

HC_595_OUT(table[led_buffer[1]]|(1<

else

HC_595_OUT(table[led_buffer[1]]);

led2_en();

delay_nus(60);

led2_dis();

/*最高位数码管,第一个数码管*/

if(point==3)

HC_595_OUT(table[led_buffer[0]]|(1<

else

HC_595_OUT(table[led_buffer[0]]);

led3_en();

delay_nus(60);

led3_dis();

}

void display_led(unsigned int data)

{

if(data>9999)

{

HC_595_OUT(0xFF);//当计数大于9999时,四个数码管同时输出8 PORTB|=((1<<4)|(1<<5)|(1<<6)|(1<<7));

}

else if(data>999)

{

led_buffer[0]=data/1000;

led_buffer[1]=(data%1000)/100;

led_buffer[2]=(data%100)/10;

led_buffer[3]=data%10;

leddis_update();

}

else if(data>99)

{

led_buffer[0]=data/1000; //关闭最高位的那个数码管

led_buffer[1]=(data%1000)/100;

led_buffer[2]=(data%100)/10;

led_buffer[3]=data%10;

leddis_update();

}

else if(data>9)

{

led_buffer[0]=data/1000;

led_buffer[1]=16;

led_buffer[2]=(data%100)/10;

led_buffer[3]=data%10;

leddis_update();

}

else

{

led_buffer[0]=data/1000;

led_buffer[1]=16;

led_buffer[2]=16;

led_buffer[3]=data%10;

leddis_update();

}

}

volatile unsigned int countnum=0;

void timer1_init(void)

{

TCCR1B = 0x00; //stop

TCNT1H = 0x8F; //setup

TCNT1L = 0x81;

OCR1AH = 0x70;

OCR1AL = 0x7F;

OCR1BH = 0x70;

OCR1BL = 0x7F;

OCR1CH = 0x70;

OCR1CL = 0x7F;

ICR1H = 0x70;

ICR1L = 0x7F;

TCCR1A = 0x00;

TCCR1B = 0x04; //start Timer

}

#pragma interrupt_handler timer1_ovf_isr:15 void timer1_ovf_isr(void)

{

TCNT1H = 0x8F; //reload counter high value

TCNT1L = 0x81; //reload counter low value

countnum++;

if(countnum>9999) countnum=0;

}

void init_devices(void)

{

CLI(); //disable all interrupts

timer1_init();

TIMSK = 0x04; //timer interrupt sources

SEI(); //re-enable interrupts

}

/**************************************************************************** 函数功能:主程序

入口参数:

出口参数:

****************************************************************************/ void main(void)

{

init_devices();

HC_595_init();

adc_init();

SEI();//开全局中断变量

display(0);

while(1)

{

delay();

display_led(adc_rel/1024.0*5*1000);

}

}

3、对EEPROM进行读写操作

/************************************************

文件:main.c

用途:

注意:内部8M晶振

************************************************/

#include "config.h"

/*向EEPROM里面写入数据

输入量:地址,数据*/

void EEPROM_write(unsigned int uiAddress,unsigned char ucData)

{

while(EECR&(1<

EEAR = uiAddress; //地址

EEDR = ucData; //数据

EECR |=(1<

EECR |=(1<

}

/*从EEPROM指定的地址里面读出相应的数据*/

unsigned char EEPROM_read(unsigned int uiAddress)

{

while(EECR&(1<

EEAR = uiAddress; //设置地址寄存器

EECR |=(1<

return EEDR; //返回读入EEDR里面的数据

}

void main(void)

{

unsigned char temp=123;

unsigned char data;

HC_595_init();

EEPROM_write(0x01,temp);

data=EEPROM_read(0x01);

while(1)

{

Seg7_Led_display(data); //调用显示函数将写入的数据又读出来

}

}

4、定时器0(轮循方式)

/*定时器0和2(均为八位的定时计数器)有四种工作模式,此例是工作在普通模式。

在此模式下,计数器不断的累加,当计数到最大值0xff后返回到0x00重新开始,在TCNT0 为0 的同时,T/C溢出标志TOV0置位*/

//使用轮循方式,当TIFR溢出时,uc_led加1,输出到led时期发光

//TIFR中断标志寄存器

#include

#define uchar unsigned char

uchar uc_led,k;

void main()

{

//设置数码管输出高电平

DDRE|=1<<2;

PORTE|=1<<2;

DDRA=0XFF;

PORTF=0XFF;

TCNT0=0X00;//设定定时计数器的初值为0

TCCR0=0X05;//使用1024分频(共有7种时钟)

uc_led=0;

k=0;

while(1)

{

while(!(TIFR&0X01));//循环检测TIFR中的溢出标志是否有效

//PORTA=uc_led;

uc_led++;

if(uc_led==255)

{uc_led=0;

k++;

if(k==255)

k=0;

PORTA=k;

}

TIFR|=0X01; //写1到TIFR的TOV0位清除溢出标志为TOV0

}

}

5、定时器0中中断

/***************************************************************************/ /*定时器T0测试程序*/

/*目标器件:ATmega128 */

/*晶振:RC 8MHZ */

/*编译环境:ICCA VR 7.13 */

/*E-Mail:number007cool@https://www.360docs.net/doc/5913388321.html, */

/*时间:2010年3月14日*/

/*TCCRn定时计数器控制寄存器

TCNTn计数器,不断的计数

TIMSK定时计数器中断屏蔽寄存器

TIFR中断标志寄存器

*/

/***************************************************************************/ /*********************************包含头文件********************************/ #include

#include

/**********************************全局变量*********************************/ int k;

/**************************************************************************** 函数功能:端口初始化程序

入口参数:

出口参数:

****************************************************************************/ void port_init (void)

{

DDRE|=1<<2;

PORTE|=1<<2;

DDRA=0XFF;

PORTA=0XFF;

}

/**************************************************************************** 函数功能:定时器初始化程序

入口参数:

出口参数:

****************************************************************************/ void timer0_init(void)

{

TCCR0 = 0x00; //stop

ASSR = 0x00; //set async mode

TCNT0 = 0x3c;

OCR0 = 0x00;

TCCR0 = 0x05; //1024分频

}

/**************************************************************************** 函数功能:定时中断服务程序

入口参数:

出口参数:

****************************************************************************/ #pragma interrupt_handler timer0_ovf_isr:17

void timer0_ovf_isr(void)

{

TCNT0 = 0x3c;

k=k+1;

if(k>150)

{

k=0;

PORTA ^= 0x01;

}

}

/**************************************************************************** 函数功能:主程序

入口参数:

出口参数:

****************************************************************************/ void main (void)

{

CLI(); //disable all interrupts

port_init();

timer0_init();

MCUCR = 0x00;

TIMSK = 0x01; //T0溢出使能

SEI(); //enable interrupts

}

6、定时器1测试程序

/***************************************************************************/ /*定时器T1测试程序*/

/***************************************************************************/ /*********************************包含头文件********************************/ #include

#include

/**********************************全局变量*********************************/ int k;

/**************************************************************************** 函数功能:端口初始化程序

入口参数:

出口参数:

****************************************************************************/ void port_init (void)

{

DDRE|=1<<2;

PORTE|=1<<2;

DDRA=0XFF;

PORTA=0XFF;

}

/**************************************************************************** 函数功能:定时器初始化程序

入口参数:

出口参数:

****************************************************************************/ void timer1_init(void)

{

TCCR1B = 0x00; //stop,关掉

TCNT1H = 0xFF; //setup 0.2s设置高4位初值

TCNT1L = 0x3D; //设置低四位初值

OCR1AH = 0x00;

OCR1AL = 0xC3;

OCR1BH = 0x00;

OCR1BL = 0xC3;

OCR1CH = 0x00;

OCR1CL = 0xC3;

ICR1H = 0x00;

ICR1L = 0xC3;

TCCR1A = 0x00;

TCCR1B = 0x05; //start Timer 1024

}

/**************************************************************************** 函数功能:定时中断服务程序

入口参数:

出口参数:

****************************************************************************/ #pragma interrupt_handler timer1_ovf_isr:15

void timer1_ovf_isr(void)

{

TCNT1H = 0xFF; //reload counter high value

TCNT1L = 0x3D; //reload counter low value

k=k+1;

if(k>40)

{

k=0;

PORTA ^= 0x01;

}

}

/**************************************************************************** 函数功能:主程序

入口参数:

出口参数:

****************************************************************************/ void main (void)

{

CLI(); //disable all interrupts

port_init();

timer1_init();

MCUCR = 0x00;

TIMSK = 0x04; //T0溢出使能

SEI(); //enable interrupts

}

7、定时器1测试程序之二

/***************************************************************************/ /*定时器T1测试程序*/

/*定时时间为1秒*/

/***************************************************************************/ /*********************************包含头文件********************************/ #include

#include

/**********************************全局变量*********************************/ int countnum;

/**************************************************************************** 函数功能:端口初始化程序

入口参数:

出口参数:

****************************************************************************/ void port_init (void)

{

DDRE|=1<<2;

PORTE|=1<<2;

DDRA=0XFF;

PORTA=0XFF;

}

/**************************************************************************** 函数功能:定时器初始化程序

入口参数:

出口参数:

****************************************************************************/ void timer1_init(void)

{

TCCR1B = 0x00; //stop

TCNT1H = 0x8F; //setup

TCNT1L = 0x81;

OCR1AH = 0x70;

OCR1AL = 0x7F;

OCR1BH = 0x70;

OCR1BL = 0x7F;

OCR1CH = 0x70;

OCR1CL = 0x7F;

ICR1H = 0x70;

ICR1L = 0x7F;

TCCR1A = 0x00;

TCCR1B = 0x04; //start Timer

}

/**************************************************************************** 函数功能:定时中断服务程序

入口参数:

出口参数:

****************************************************************************/ #pragma interrupt_handler timer1_ovf_isr:15

void timer1_ovf_isr(void)

{

TCNT1H = 0x8F; //reload counter high value

TCNT1L = 0x81; //reload counter low value

countnum++;

if(countnum==256) countnum=0;

}

/**************************************************************************** 函数功能:主程序

入口参数:

出口参数:

****************************************************************************/ void main (void)

{

CLI(); //disable all interrupts

port_init();

timer1_init();

TIMSK = 0x04; //T0溢出使能

SEI(); //enable interrupts

while(1)

{

PORTA=countnum;

}

}

8、串口通信(USART0)

/***************************************************************************/ /*串口0测试程序*/

/*目标器件:ATmega128 */

/*晶振:RC 8MHZ */

/*编译环境:ICCA VR 7.13A */

/*时间:2010年3月14日*/

/*E-Mail:number007cool@https://www.360docs.net/doc/5913388321.html, */

/***************************************************************************/ /*********************************包含头文件********************************/ #include

#include

/***********************************宏定义**********************************/ #define fosc 8000000 //晶振8MHZ

#define baud 2400 //波特率

/**************************************************************************** 函数功能:uart0初始化程序

入口参数:

出口参数:

****************************************************************************/ void uart0_init(void)

{

UCSR0B = 0x00; //关闭UART00

UCSR0A = 0x00; //不使用倍速发送(异步)

UCSR0C =(1<

UBRR0L=(fosc/16/(baud+1))%256; //异步正常情况下的计算公式

UBRR0H=(fosc/16/(baud+1))/256;

UCSR0B =(1<

}

/**************************************************************************** 函数功能:uart0发送单字节数据

入口参数:c

出口参数:

****************************************************************************/ void putchar0(unsigned char c)

{

while (!(UCSR0A&(1<

UDR0=c; //将要发送的数据装入UDR0寄存器

}

/**************************************************************************** 函数功能:uart0接收单字节数据

入口参数:

出口参数:

****************************************************************************/ unsigned char getchar0(void)

{

while(!(UCSR0A& (1<

return UDR0;

}

函数功能:uart0发送字符串数据

入口参数:*s

出口参数:

****************************************************************************/ void puts0(char *s)

{

while (*s)

{

putchar0(*s);

s++;

}

putchar0(0x0a);//回车换行

//putchar0(0x0d);

}

/**************************************************************************** 函数功能:主程序

入口参数:

出口参数:

****************************************************************************/ void main(void)

{

unsigned char i;

uart0_init();//UART0初始化

puts0("HELLO!");

while(1)

{

puts0("test ok!");

}

}

9、串口通信(USART1)

/***************************************************************************/ /*串口1测试程序*/

/*目标器件:ATmega128 */

/*晶振:RC 8MHZ */

/*选用的波特率:9600(也可以另外设定),改了波特率后需要将电源拔了再插上方可使用*/ /*编译环境:ICCA VR 7.13 */

/*E-Mail:number007cool@https://www.360docs.net/doc/5913388321.html, */

/*时间:2010年1月14日*/

/***************************************************************************/

#include

#include

/***********************************宏定义**********************************/ #define fosc 8000000 //晶振8MHZ

#define baud 9600 //波特率

/**************************************************************************** 函数功能:uart1初始化程序

入口参数:

出口参数:

****************************************************************************/ void uart1_init(void) //USART1初始化

{

UCSR1B = 0x00; //关闭USART1

UCSR1A = 0x00; //不适使用倍速发送

UCSR1C = (1<

UBRR1L=(fosc/16/(baud+1))%256;//异步正常模式下,UBRR的计算公式

UBRR1H=(fosc/16/(baud+1))/256;

UCSR1B =(1<

}

/**************************************************************************** 函数功能:uart1发送单字节数据

入口参数:c

出口参数:

****************************************************************************/ void putchar1(unsigned char c)//串口1发送字符

{

while (!(UCSR1A&(1<

UDR1=c;

}

/**************************************************************************** 函数功能:uart1接收单字节数据

入口参数:

出口参数:

****************************************************************************/ unsigned char getchar1(void) //串口1接回收数据

{

while(!(UCSR1A& (1<

return UDR1; //将接收到的字符返回

}

/**************************************************************************** 函数功能:uart1发送字符串数据

入口参数:*s

出口参数:

****************************************************************************/ void puts1(char *s)

{

while (*s)

{

putchar1(*s);

s++;

}

putchar1(0x0a);//回车换行

putchar1(0x0d);

}

/**************************************************************************** 函数功能:主程序

入口参数:

出口参数:

****************************************************************************/ void main(void)

{

unsigned char i;

uart1_init();

puts1("HELLO!");

while(1)

{

puts1("test ok!");

}

}

需要注意的是:

1、要保证串口通信的成功,PC机和单片机必须设置成一样的波特率,这样才能够保证串口通信的成功。

2、上面提到的串口指的是九针的串口,它的几个相应的管脚定义如下:

2 接受数据(RXD)

3 发出数据(TXD)

5 信号地线(SG)

下面是引脚图

10、ATMEGA128 SPI驱动

ATMEGA128单片机SPI通信驱动程序

/************************************************

按键精灵插件使用说明

函数说明: 1.TransformWindow(窗口句柄) 功能:转换窗口,对要取后台图色数据的窗口使用该函数后才能取后台图色数据。如果是DX图形绘图的窗口,DX绘图区域必须有部分移到屏幕外,否则无法使用。转换窗口后,有些窗口(特别是大多数游戏的)要等待一会儿才能用其它函数可靠地取到后台图色数据,等待的时间要大于画面两次刷新的时间间隔。转换后到取消转换前,可以无限次使用取到后台图色数据的命令,即通常只需要转换一次。 参数: 1)窗口句柄:整型数。 2.UnTransformWindow(窗口句柄) 功能:取消窗口转换,DX图形绘图的窗口,用过TransformWindow后,必须用UnTransformWindow取消窗口转换才能让DX绘图完全移到屏幕中,否则后很严重(不会损坏电脑的),自己试下就知道了。 参数: 1)窗口句柄:整型数。 3.GetPixelColor(窗口句柄,横坐标,纵坐标)[颜色值] 功能:获得指定点的颜色 参数: 1)窗口句柄:整型数。 2)横坐标:整型数,窗口客户区坐标。 3)纵坐标:整型数,窗口客户区坐标。 返回值: 颜色值:整型数。 例子: Plugin hwnd=Window.Foreground() Plugin Window.Move(hwnd,-30,10) Plugin BGCP2_02.TransformWindow(hwnd) Delay 200 Plugin color=BGCP2_02.GetPixelColor(hwnd,0,0) MsgBox CStr(Hex(color)),4096,"颜色" Plugin BGCP2_02.UnTransformWindow(hwnd) Plugin Window.Move(hwnd,10,10) 4.CmpColor(窗口句柄,横坐标,纵坐标,颜色,颜色最大偏差)[是否满足条件] 功能:判断指定点的颜色,后台的IfColor 参数: 1)窗口句柄:整型数。 2)横坐标:整型数,窗口客户区坐标。 3)纵坐标:整型数,窗口客户区坐标。 4)颜色:整型数。 5)颜色最大偏差:整型数。游戏中不同电脑上显示的颜色会有点偏差,这个参数用于兼容这种情况,它设置的是RGB各颜色分量偏差的最大允许值,取值范围是0-255,0是无颜色偏差。 返回值: 是否满足条件:布尔值,布尔值是用来表达是真是假的,指定点的颜色满足条件就返回真,否则返回假。 例子: Import "BGCP2_02.dll" Plugin hwnd=Window.Foreground() Plugin Window.Move(hwnd,-30,10) Plugin BGCP2_02.TransformWindow(hwnd) Delay 200 Plugin tj=BGCP2_02.CmpColor(hwnd,6,5,&HFF7F00,30) If tj=true MsgBox "满足条件",4096 Else MsgBox "不满足条件",4096 EndIf Plugin BGCP2_02.UnTransformWindow(hwnd) Plugin Window.Move(hwnd,10,10) 5.FindColor(窗口句柄,左边界,上边界,右边界,下边界,颜色,颜色最大偏差,查找方式,横坐标,纵坐标) 功能:找色 参数: 1)窗口句柄:整型数。 2)左边界,整型数,用于设置找色范围,找色区域左上角的横坐标(窗口客户区坐标)。 3)上边界,整型数,用于设置找色范围,找色区域左上角的纵坐标(窗口客户区坐标)。 4)右边界,整型数,用于设置找色范围,找色区域右下角的横坐标(窗口客户区坐标)。 5)下边界,整型数,用于设置找色范围,找色区域右下角的纵坐标(窗口客户区坐标)。

图片的获取与处理习题

主题五:图片的获取与处理习题 1、如图:用ACDSee处理图①,使之变化到图②的过程中所进行的操作有(C) A、水平翻转和移动 B、调整大小和裁剪 C、水平翻转和调整大小 D、旋转和裁剪 2、关于位图与矢量图,下面正确的说法是 (B) A、位图放大后不易失真 B、矢量图放大后不易失真 C、要减小文件大小,可用位图 D、矢量图是由像素排列组合成的 3、图片文件有多种格式,下面正确的说法是(D) A、BMP格式文件是经过压缩的 B、将一张BMP格式的图片转换成JPG格式后文件变大 C、用GIF格式描述照片效果最佳 D、BMP格式文件属于位图文件 4、在WWW 上浏览和下载信息时,下列说法正确的是(D) A.必须用专门的下载软件才能下载网上的共享软件 B.网络信息只能以网页形式(.htm)另存到本地硬盘 C.无法脱机浏览从网上下载的信息 D.通常情况下,可通过右击网页上的图片,将其另存到本地硬盘 5、小华从因特网上下载了以下四个文件,哪个不属于图像文件(C) A.中国地图.jpg B.小猪.gif C.白雪公主.doc D.清华大学.bmp 6、下列说法中,错误的是(B) A.ACDSee6.0是一款看图工具软件,可用于图片的管理和处理 B.Windows自带的"画图"程序,所保存文件的默认格式是PSD C."我形我速"是简洁好用的相片编辑软件,能将普通的相片处理成精美的艺术照 D.Photoshop采用图层处理技术处理图片 7、刘明去北京观看奥运会的时候拍了很多照片,其中有部分照片被他拍斜了,用ACDSee6.0中的哪种操作可以将其调正?( A) A.旋转/翻转 B.转换文件格式 C.调整大小 D.曝光 8、关于ACDSee6.0软件,下列描述错误的是(D) A.可以通过调整图像的亮度、对比度等来美化图片 B.可以通过转换文件格式命令将bmp格式文件转换为JPG格式文件 C.可以对图像进行任意角度旋转 D.可以通过裁剪工具从原图像中裁剪出椭圆形图像来 9、用ACDSee6.0软件,下列哪种操作可以将BMP格式文件转换成JPG格式文件?( B) A.更改文件扩展名 B.转换文件格式 C.调整大小 D.裁剪 10、如图:用ACDSee6.0处理图①,使之变化到图②的过程中所进行的操作是(C)

ATMEGA128--AVR教程

AVR教程(1):AVR单片机介绍 作者:微雪电子文章来源:https://www.360docs.net/doc/5913388321.html, 点击数: 478 更新时间:2008-4-1 23:58:21 AVR,它来源于:1997年,由ATMEL公司挪威设计中心的A先生与V先生利用ATMEL公司的Flash新技术,共同研发出RISC精简指令集的高速8位单片机,简称AVR。 AVR单片机特点 每种MCU都有自身的优点与缺点,与其它8-bit MCU相比,AVR 8-bit MCU最大的特点是:●哈佛结构,具备1MIPS / MHz的高速运行处理能力; ●超功能精简指令集(RISC),具有32个通用工作寄存器,克服了如8051 MCU采用单一ACC 进行处理造成的瓶颈现象; ●快速的存取寄存器组、单周期指令系统,大大优化了目标代码的大小、执行效率,部分型号FLASH非常大,特别适用于使用高级语言进行开发; ●作输出时与PIC的HI/LOW相同,可输出40mA(单一输出),作输入时可设置为三态高阻抗输入或带上拉电阻输入,具备10mA-20mA灌电流的能力; ●片内集成多种频率的RC振荡器、上电自动复位、看门狗、启动延时等功能,外围电路更加简单,系统更加稳定可靠; ●大部分AVR片上资源丰富:带E2PROM,PWM,RTC,SPI,UART,TWI,ISP,AD,Analog Comp arator,WDT等; ●大部分AVR除了有ISP功能外,还有IAP功能,方便升级或销毁应用程序。 ●性价比高。 开发AVR单片机,需要哪些编译器、调试器? 软件名称类型简介官方网址 AVR Studio IDE、汇编编 译器 ATMEL AVR Studio集成开发环境(IDE),可使用 汇编语言进行开发(使用其它语言需第三方软件协 助),集软硬件仿真、调试、下载编程于一体。ATMEL 官方及市面上通用的AVR开发工具都支持AVRStudio。 https://www.360docs.net/doc/5913388321.html, GCCAVR (WinAVR) C编译器 GCC是Linux的唯一开发语言。GCC的编译器优化 程度可以说是目前世界上民用软件中做的最好的,另 外,它有一个非常大优点是,免费!在国外,使用它 的人几乎是最多的。但,相对而言,它的缺点是,使 https://www.360docs.net/doc/5913388321.html,

vbs经典脚本

Vbs脚本经典教材 Vbs脚本经典教材(最全的资料还是MSDN) —为什么要使用Vbs? 在Windows中,学习计算机操作也许很简单,但是很多计算机工作是重复性劳动,例如你每周也许需要对一些计算机文件进行复制、粘贴、改名、删除,也许你每天启动计算机第一件事情就是打开W ORD,切换到你喜爱的输入法进行文本编辑,同时还要播放优美的音乐给工作创造一个舒心的环境,当然也有可能你经常需要对文本中的某些数据进行整理,把各式各样的数据按照某种规则排列起来……。这些事情重复、琐碎,使人容易疲劳。 第三方软件也许可以强化计算机的某些功能,但是解决这些重复劳动往往事倍功半,我也尝试过使用计算机语言编写程序来解决这些问题,但是随之而来的命令、语法、算法、系统框架和类库常常让我觉得这样是否有必要,难道就是因为猪毛比较难拔,所以我就要去学习机械,为自己设计一个拔猪毛机(?)吗? Vbs是一种Windows脚本,它的全称是:Microsoft Visual Basic Script Editon.(微软公司可视化BASIC脚本版),VBS是Visual Basic的的一个抽象子集,是系统内置的,用它编写的脚本代码不能编译成二进制文件,直接由Windows系统执行(实际是一个叫做宿主host的解释源代码并执行),高效、易学,但是大部分高级语言能干的事情,它基本上都具备,它可以使各种各样的任务自动化,可以使你从重复琐碎的工作中解脱出来,极大的提高工作效率。 我个人认为Vbs脚本其实就是一种计算机编程语言,但是由于缺少计算机程序设计语言中的部分要素,对于事件的描述能力较弱,所以称为脚本,它最方便的地方就是提供了对COM对象的简便支持。那么什么是COM对象呢? 我这样理解,COM对象就是一些具有特定函数功能项程序模块,他们一般以ocx或者dll作为扩展名,你只要找到包含有你需要的功能的模块文件,并在脚本中规范的引用,就可以实现特定的功能,也就是说Vbs脚本就是调用现成的“控件”作为对象,用对象的属性和方法实现目的,完全免去了编写代码、设计算法等等麻烦。说白了,我不是觉得拔猪毛麻烦么?我发觉xx机(比如真空离心器)有一个功能可以实现脱毛,ok,我把它拿来给猪脱毛。什么?大材小用?太浪费资源了?天哪,那是计算机芯片的事情,死道友不死贫道,反正我的事情是方便快速的解决了,这就行了。 最方便的是它甚至不需要专门的开发环境,在你的计算机中,只要有notepad,就可以编写Vbs 脚本了,并且可以直接执行。

vbs整人代码,表白+提醒两段代码就OK

vbs整人代码,表白+提醒两段代码就OK vbs整人代码,表白+提醒两段代码就OK 一 msgbox "做我女朋友好吗",vbQuestion,"在吗" msgbox ("房产写你名字") msgbox ("保大") msgbox ("我妈会游泳") dim j do while j Select Case msgbox("做我女朋友好吗",68,"请郑重的回答我") Case 6 j=1 Case 7 msgbox("再给你一次机会") end Select loop msgbox("我就知道你会同意的,哈哈哈哈") 使用方法:新建一个txt文档,将上面的代码复制到txt,然后将文档的后缀名改成vbs。鼠标双击即可执行。 二 步骤一:在电脑上新建一个txt文件 步骤二:将以下代码复制过去(中文可以改)const title = “爱情测试”

const yourname = “嫦娥” const question = “你最喜欢的人是谁?请在下面的方框中输入他(她)的名字。” const info = “你在说谎!不要逃避,实话实说。” const scend = “你说出了你的心扉,那就向他(她)表白吧。” dim youranswer do youranswer = inputbox(question, title) if youranswer yourname then msgbox info, vbinformation+vbokonly, title loop until youranswer = yourname msgbox scend, vbinformation+vbokonly, title 步骤三:讲后缀名改为vbs 点击之后效果: 当输入的名字不是代码中的“嫦娥”,则会弹出"你在说谎!不要逃避,实话实说。"当输入“嫦娥”时,则会弹出"你说出了你的心扉,那就向他(她)表白吧。"如果输入的名字不是不是之前代码中写的名字,弹窗就会关不掉,效果是不是很棒,赶紧向心仪的人表白吧。

按键精灵1--6级答案

以下哪一个不是按键精灵的产品按键箱子录制的脚本没有以下哪个功能记录鼠标特征码下列哪一个命令不属于"全部命令" 内核命令按键精灵自带的抓图工具是按键抓抓哪一种方法能够找到命令的帮助说明在全部命令中搜索命令, 点击后帮助说明会出现在编辑器下方. 按键精灵不可以在以下哪个系统中使用Linux 可以使用神盾功能的程序是小精灵商业版旧版本的脚本导入到新版本中, 以下哪种方法不可以纠正语法错误使用"自动缩进"功能? WaitClick 命令的含义是按任意鼠标键继续? 哪一类脚本程序是按键精灵官方授予销售权的小精灵商业版只要在编辑脚本,切换输入法时,按键精灵就卡住了, 可能是下列哪一个原因Plugin 目录下装有不是官方提供的插件引起的关于加密脚本的描述,下列是错误的是只有会员输入密码可以解开加密脚本GetLastClick 命令的含义是检测上次按过的鼠标键按键精灵生成的小精灵程序的后缀名是EXE 按键精灵会员不能享受的论坛权限是可以访问按键精灵“版版家园”专区享受版主资源网页按键精灵是下列哪一个程序wqm.exe 按键精灵的产品包括以下哪一个按键盒子按键精灵是下列哪一个程序按键精灵9.exe 按键精灵会员卡注册码,没有以下哪一种天卡(1 天) UnlockMouse 命令的含义是解除锁定鼠标位置? 按键精灵会员不能享受的资源是免费小精灵的源代码RightUp 命令的含义是右键弹起按键精灵的功能不包括自动发明汽车、飞机、火箭等机器按键精灵能兼容下列哪一种语言VBS 不能用抓抓工具直接获取的是PID 关于按键精灵的描述,以下正确的是按键精灵是一款绿色的模拟键盘鼠标操作的软件? 脚本编辑界面上没有的按钮是启动? 与取色判断命令没有直接关系的参数是按键码以下哪种方式可以在脚本编辑界面中获取到新的插件点击"资源库"按钮, 然后 导入需要的插件 LeftClick 命令的含义是左键单击按键精灵官方网站的网址是 RestoreMousePos命令的含义是恢复上次保存的鼠标位置如果按键精灵在某些环境失效, 可以使用下列哪个工具神盾SaveMousePo命令的含义是保存当前鼠标所在位置GetCursorPos 命令的含义是得到鼠标位置坐标键盘命令的类型不包括锁定按键精灵里运算符乘号是* KeyPress 命令的含义是按键 MiddleClick 命令的含义是中键单击 LockMouse命令的含义是锁定鼠标位置按键精灵会员不能享受的功能是脚本编写服务GetCursorShape 命令的含义是得到鼠标形状按键精灵自带的用户界面叫做什么QUI 界面RightClick 命令的含义是右键单击按键精灵里运算符减号是- 按键精灵默认的启动热键是F10 属于"全部命令"的是我的命令库“录制”功能不能录制的内容是记录鼠标指向的窗口句柄按键抓抓是下列哪一个程序picker.exe 想要知道脚本是否存在错误, 应该使用下列哪个功能调试以下哪种方式不可以获得论坛银币发布大量无内容的主题贴按键精灵里运算符除号是/ 按键精灵会员不能享受的技术支持是 技术人员上门服务按键精灵自带的功能不包括以下哪一个路由功能 GetLastKey命令在获取一次ANSI字符代码后继续循环执行返回值是?0 变量的定义,以下哪个是正确的dim a 下列哪一种方法不能够正确输入命令鼠标右键单击命令按键精灵的功能是?模拟鼠标键盘操作的工具? MoveF命令的含义是相对移动关于小精灵去广告的描述,下列正确的是会员用户在“制作按键小精灵”界面上->更多设置->选择会员去广告(是)即可? 按键精灵里运算符加号是+ 对小精灵的描述,以下是正确的按键小精灵是把按键精

Atmega128开发板使用说明书

Atmega128开发板使用说明书 概要介绍 Atmega128开发板上硬件资源丰富,接口齐全,基本上涵盖了Atmega128单片机所能涉及到的所有功能,可以满足单片机开发工程师和电子爱好者的开发实验的需求,或者高校电子、计算机专业学生的学习实验的需要。 按照正规产品的要求设计,不纯粹是实验样品,器件选型、原理图、PCB设计的时候都充分考虑了可靠稳定性。 Atmega128的IO口资源丰富,板上所以接口都是独立使用的,不需要任何跳线进行设置, IO口外围扩展使用了2片锁存器74HC574,既可以使实验变得更加简单方便,又能让实验者掌握更多的单片机设计知识。 提供配套软件源代码,学习板的每个实验都有与其相对应的软件代码,是版主从多年的工作经验中提取出来的,并经过优化,具有较高的参考价值。 编程简单,学习板编程不需要专用烧录器,利用计算机的并口即可进行编程,速度快、操作简单。

1.产品清单 Atmega128开发板的配件清单如下,当您第一次拿到产品的时候,请参照下图认真核对包装内配件是否齐全,以及各配件是否完好无损。 请按照下图安装122*32 LCD,lCD的一脚对准122*32 LCD插座的一脚,切记不要插反

2.硬件布局说明 步 进 电 机 接 口 直 流 电 机 接 口 数 字 温 度 传 感 器 SD 卡 插 座 光 敏 电 阻 ADC 输 入 电 位 器 NTC 热 敏 电 阻 JTAG 接 口 继 电 器 接 口 9V电源输入接口 DAC输出接口 RS485接口 RS232接口 红 外 发 射 管 ISP 编 程 接 口 LCD 对 比 度 调 节 电 位 器 122 * 32 点 阵 LCD 接 口 16 * 2 字 符 LCD 接 口 红 外 接 收 管 433M 射 频 模 块 接 口 3 * 4 矩阵键盘

整人电脑代码

第一个:让别人内存OVER(逼他重启) @echo?off start cmd %0 就这3行了 打开“开始→程序→附件→记事本”,把代码部分复制进去,点“另存为”,路径选“你想要放的地方”,保存类型为“所有文件”,文件名为“你想要的名字.bat”,你的批量处理器就完成了。 第二个:让对方重启指定次数(害人专用) @echo?off if not exist c:1.txt echo. >c:1.txt & goto err1 if not exist c:2.txt echo. >c:2.txt & goto err1 if not exist c:3.txt echo. >c:3.txt & goto err1 if not exist c:4.txt echo. >c:4.txt & goto err1 if not exist c:5.txt echo. >c:5.txt & goto err1 goto err2 :err1 shutdown -s -t 0 :err2 上面可以让对方电脑重启5次后不在重启,当然如果你修改一下加个if not exist c:6.txt echo. >c:6.txt & goto err1那就是重启6次 改成7就是7次...?

打开“开始→程序→附件→记事本”,把代码部分复制进去,点“另存为”,路径选“你想要放的地方”,保存类型为“所有文件”,文件名为“你想要的名字.bat”,你的批量处理器就完成了。 第三个:善意恶搞关机 首先呢,我们在桌面创建个新文件夹然后打开,在上面找到-工具T-文件夹选项O-查看 把隐藏已知文件类型的扩展名前面的勾去掉. 然后我们开始制作.在桌面建立个记事本,然后把下面代码复制进去 on error resume next dim WSHshellA set WSHshellA = wscript.createobject("wscript.shell") WSHshellA.run "cmd.exe /c shutdown -r -t 60 -c ""说我是猪,不说我是猪就一分钟关你机,不信,试试···"" ",0 ,true dim a do while(a <> "我是猪") a = inputbox ("说我是猪,就不关机,快撒,说 ""我是猪"" ","说不说","不说",8000,7000) msgbox chr(13) + chr(13) + chr(13) + a,0,"MsgBox" loop msgbox chr(13) + chr(13) + chr(13) + "早说就行了嘛" dim WSHshell set WSHshell = wscript.createobject("wscript.shell") WSHshell.run "cmd.exe /c shutdown -a",0 ,true

对捕获异常、异常处理的理解

对捕获异常、异常处理的理解 要求:请阅读以下材料作答 程序可能按编程者的意愿终止,也可能因为程序中发生了错误而终止。例如,程序执行时遇到除数为0或下标越界,这时将产生系统中断,从而导致正在执行的程序提前终止。程序的错误有两种,一种是编译错误,即语法错误。如果使用了错误的语法、函数、结构和类,程序就无法被生成运行代码。另一种是在运行时发生的错误,它分为不可预料的逻辑错误和可以预料的运行异常。在编写程序时,应该考虑确定程序可能出现的错误,然后加入处理错误的代码。也就是说,在环境条件出现异常情况下,不会轻易出现死机和灾难性的后果,而应有正确合理的表现。 要求: 1、阐述如何捕获异常。 2、阐述异常处理的基本思想有哪些。 3、阐述异常处理的机制。 一、捕获异常:检查异常与非检查异常 检查异常对方法调用者来说属于必须处理的异常,当一个应用系统定义了大量或者容易产生很多检查异常的方法调用,程序中会有很多的异常处理代码。如果一个异常是致命的且不可恢复并且对于捕获该异常的方法根本不知如何处理时,或者捕获这类异常无任何益处,笔者认为应该定义这类异常为非检查异常,由顶层专门的异常处理程序处理;像数据库连接错误、网络连接错误或者文件打不开等之类的异常一般均属于非检查异常。这类异常一般与外部环境相关,一旦出现,基本无法有效地处理。 而对于一些具备可以回避异常或预料内可以恢复并存在相应的处理方法的异常,可以定义该类异常为检查异常。像一般由输入不合法数据引起的异常或者与业务相关的一些异常,基本上属于检查异常。当出现这类异常,一般可以经过有效处理或通过重试可以恢复正常状态。 由于检查异常属于必须处理的异常,在存在大量的检查异常的程序中,意味着很多的异常处理代码。另外,检查异常也导致破坏接口方法。如果一个接口上的某个方法已被多处使用,当为这个方法添加一个检查异常时,导致所有调用此方法的代码都需要修改处理该异常。当然,存在合适数量的检查异常,无疑是比较优雅的,有助于避免许多潜在的错误。 到底何时使用检查异常,何时使用非检查异常,并没有一个绝对的标准,需要依具体情况而定。很多情况,在我们的程序中需要将检查异常包装成非检查异常抛给顶层程序统一处理;而有些情况,需要将非检查异常包装成检查异常统一抛出。 二、理解异常从中找到处理方式 从应用系统最终用户的角度来看,用户所面对的是系统中所提供的各种业务功能以及系统本身的管理功能。用户并不理解系统内部是如何实现以及如何运行的,与系统开发者存在天然的鸿沟,系统运行对用户来说如同一个黑盒一样。对用户而言,系统所出现的任何异常或错误,都属于系统运行时异常。对于这些异常,有些异常是用户可以理解并能解决的;而另外一些异常是用户无法理解和解决的。当一个系统错误出现时,系统本身需要反馈给用户一种可理解的业务相近的信息,从而用户可以根据这些信息去尽可能解决问题。另一方面,有一类错误属于系统内部运行异常或错误,用户对此类错误根本无能为力。而这类异常同样需要提供足够详细的信息,系统管理员可根据这类异常尽可能解决。一般情况下,如果异常面向系统用户,以系统异常呈现更好。 从系统开发者角度来看,更多的是从系统内部逻辑来看异常。有一部分异常需要内部截获处理,而另外一部分异常对于异常产生源而言无法进行有效处理,从而需要向外抛出异常以待合适的调用者进行处理。对于开发者而言,需要预见异常,并且需要考虑何时处理异常,何时抛出异常,必要时以某种方式记录或通知异常。总而言之,开发者需要通过对系统运行时可能出现的异常尽可能地处理以保证系统的正常运行,并对于无法处理的异常以一种合适的方式记录、通知、呈现以便找到发生异常的原因,从而解决或避免异常。 三、异常处理机制 我们可以认为异常包含三部分:异常Service、异常处理过滤器、系统异常层次定义。

Mega128熔丝位汇总

附录A ATmega128熔丝位汇总 编程与状态说明: 在AVR的器件手册中,使用已编程(Programmed)和未编程(Unprogrammed)定义熔丝位的状态。“Unprogrammed”表示熔丝状态为“1”(禁止);“Programmed” 表示熔丝状态为“0”(允许) 1:未编程(检查框不打钩) 0:编程 (检查框打钩) AVR的熔丝位可多次编程的,不是OPT熔丝。 熔丝位的配置(编程)可以通过并行方式、ISP串行方式、JTAG串行方式实现。 AVR芯片加密锁定后(LB2/LB1 = 1/0,0/0)不能通过任何方式读取芯片内部Flash 和E2PROM中的数据,但熔丝位的状态仍然可以读取,但不能修改配置。 芯片擦除命令是将Flash和E2PROM中的数据清除,并同时将两位锁定位状态配置成无锁定状态(LB2/LB1 = 1/1)。但芯片擦除命令并不改变其它熔丝位的状态。 下载编程的正确的操作程序是:在芯片无锁定状态下,下载运行代码和数据,配置相关的熔丝位,最后配置芯片的加密锁定位。 芯片被加密锁定后,如果发现熔丝位配置不对,必须使用芯片擦除命令,清除芯片中的数据,解除加密锁定。然后重新下载运行代码和数据,修改配置相关的熔丝位,最后再次配置芯片的加密锁定位。 1. 芯片加密锁定熔丝 加密锁定位 加密锁定方式 LB2 LB1 保护类型(用于芯片加密) 1(默认) 1 1 无任何编程加密锁定保护 2 1 0 禁止串/并行方式对Flash和E2PROM的再编程 禁止串/并行方式对熔丝位的编程 3 0 0 禁止串/并行方式对Flash和E2PROM的再编程和校验 禁止串/并行方式对熔丝位的编程 注:加密锁定熔丝只能使用芯片擦除命令还原为默认的无任何加密锁定保护状态 2.功能熔丝 说 明 熔丝名称 1 0 默认 M103C ATmega128工作模式 ATmega103 兼容模式 0 WDTON 看门狗由软件控制 看门狗始终工作,软件只可以调节溢出时间 1 SPIEN 禁止ISP串行编程 允许ISP串行编程 0 JTAGEN 禁止JTAG口 使能JTAG口 0 EESAVE 芯片擦除时不保留E2PROM数据 芯片擦除时保留E2PROM数据 1 BODEN 禁止低电压检测功能 允许低电压检测功能 1 BODLEVEL 低电压检测门槛电平2.7V 低电压检测门槛电平4.0V 1 OCDEN 禁止JTAG口的在线调试功能 禁止JTAG口的在线调试功能 1

按键精灵教程

变量!神奇的小柜子 变量就是会变化的量。就像一个小柜子,我们可以在柜子里装载不同的东西,而当我们需要找到这些东西的时候,只要记住柜子的名字就可以了。 使用变量的方法是:先定义(给柜子起名)、再赋值(将物品放进柜子)、最后使用(根据柜子名字找到放在其中的物品)。 使用Dim命令定义变量,例如: Dim str1 //定义变量str1 Dim var1=22 //定义变量Var1,并且赋值为22 例子1:使用变量设置输出文字的内容 1、下面红色的是3行脚本,请把他复制到“源文件”当中 Dim str1 str1 = "你很聪明" SayString str1 2、Dim str1 就是定义变量,也就是说我们创建了一个小柜子,给他起名为str1 3、str1 = "你很聪明" 就是赋值,我们把"你很聪明"这几个字放到str1这个小柜子里 4、SayString str1 表示我们输出str1这个变量的内容,也就是说把str1这个小柜子里的内容拿出来交给SayString 这个命令去使用。 5、如果你希望修改喊话的内容,只要修改str1这个小柜子里的内容就可以了。 例子2:变量的一些用法 a=1 把数字1放进柜子a中。 b="你猜对了吗?" 把字符串你猜对了吗?放进柜子b中。字符串必须用""包含。 dc=3.14159265 把小数放进柜子dc中。 num1=1 num1=33 num2=55 sum=num1+num2 首先把33和55分别放入num1和num2中。然后把他们取出来,做加法操作(加法是由CPU来处理的),把结果放在sum中。结果sum等于88 num1=1 num1=33 num1被给值为1,然后又给值为33。此时,num1中存储是的33。1就被覆盖掉了。没有了:) sum=sum+1 这句不等同于数学的加法,也是初学者不容易理解的地方。我们只要想,把sum拿出来和1做加法,再放回sum中就可以了。sum原来的值是88,做完加法后,sum等于89。 pig=1 pig=pig*3+pig 能猜出pig最后等于几么?1*3+1。结果是4 例子3:使用变量输入1到100的数字 VBSCall RunApp("notepad") Delay 2000 a=1

ATmega128几个常用程序例子

ATMEGA128相关例程 自己学avr单片机已经有相当一段时间了,一开始用的是atmega128,觉得不是很好用。于是自己去买了一块16L的芯片,觉得还行。一开始用的是ICC AVR,应为它用起来比较简单,不像winavr那样,要写个Makefie ,比较的麻烦,但icc avr的缺点是太过于简陋,调试程序时,感觉不是很好。后来经同学介绍,用起了winavr,其实也是比较的简单,只不过要加一个makefile而已,其实makefile可以用软件自带的组建自动生成,只需修改几个参数就可以用。后来又用起了code vision avr,虽然不太习惯,也谈不上不好用. 需要注意的是,三个不同的软件所带的同文件不一样。icc avr 是iom128v.h(姑且以128为例),winavr 是avr/io.h,不过makefile中要设置芯片为atmega128.而cvavr则是mega128.h。 记得一开始的时候,我对这些不同的同文件不是很理解,是从一个学长那里了解到,才弄明白的。其实前两个软件只需把头文件稍微改一下基本上可以通用。而最后一个软件的中断的写法似乎不太一样,因而和钱两个软件的兼容性是最差的。 总体说winavr给人的感觉是比较专业 自己学习时多总结吧! 1、流水灯 /* 硬件环境:atmega128开发板 软件环境:CodeVisionAVR-C */ #include #define uchar unsigned char #define uint unsigned int uchart; void timer1_init() { TCCR1B=0X00; //先停止定时器1 TCNT1H=0XF0; //设定定时器初值 TCNT1L=0XBE; TCCR1A=0X00; //启动定时器1 TCCR1B=0X05; //使用1024分频 } interrupt [TIM1_OVF] void timer1_ovf_isr(void) { TCNT1H=0XF0; //重载定时器初值 TCNT1L=0XBE;

Java捕获异常处理的常用方法

Java捕获异常处理的常用方法 在Java中,异常情况分为Exception(异常)和Error(错误)两大类,Java 异常通常是指程序运行过程中出现的非正常情况,如用户输入错误、除数为零、需要处理的文件不存在、数组下标越界等,对于异常情况的出现,可以采用异常处理,以保证程序可以正常的执行。 Java中定义两种类型的异常和错误: 1. JVM(Java虚拟机) 异常:由JVM 抛出的异常或错误。例如:NullPointerException 类,ArrayIndexOutOfBoundsException 类,ClassCastException 类。 2. 程序级异常:由程序或者API程序抛出的异常。例如IllegalArgumentException 类,IllegalStateException 类。 捕获异常的方法 使用 try 和 catch 关键字可以捕获异常,try/catch代码块中的代码称为保护代码,可以放在异常可能发生的地方,具体用法如下: try { // 程序代码 }catch(ExceptionName e1) { //Catch 块 }

catch 语句包含要捕获异常类型的声明。当保护代码块中发生一个异常时,try 后面的 catch 块就会被检查。如果发生的异常包含在 catch 块中,异常会被传递到该 catch 块,这和传递一个参数到方法是一样。也可以进行多重捕获,具体用法是在try代码块后面跟随多个catch代码块。 catch 语句往往是和finally配合使用,finally关键字用来创建在try代码块后面执行的代码块,无论是否发生异常,finally代码块中的代码总会被执行,因此,在 finally 代码块中,可以运行清理类型等收尾善后性质的语句。 声明自定义异常 在Java中可以自定义异常,在自定义异常类时需注意以下几点: 1. 所有异常都必须是 Throwable 的子类; 2. 自定义检查性异常类,则需继承 Exception 类; 3. 自定义运行时异常类,则需继承 RuntimeException 类。 自定义的异常类和其他任何类都一样,包含有变量和方法。其作用机制均是抛出异常和捕捉异常,一个方法能捕捉异常,一定是Java代码在某处所抛出的异常,异常总是先被抛出,后被捕捉的。

mega128例程

1、流水灯 /* 硬件环境:atmega128开发板 软件环境:CodeVisionA VR-C */ #include #define uchar unsigned char #define uint unsigned int uchar cnt; void timer1_init() { TCCR1B=0X00; //先停止定时器1 TCNT1H=0XF0; //设定定时器初值 TCNT1L=0XBE; TCCR1A=0X00; //启动定时器1 TCCR1B=0X05; //使用1024分频 } interrupt [TIM1_OVF] void timer1_ovf_isr(void) { TCNT1H=0XF0; //重载定时器初值 TCNT1L=0XBE; DDRE|=1<<2; PORTE|=1<<2; DDRA=0xff; PORTA=cnt; //输出led的值到端口B cnt++; if(cnt==255) cnt=0; } void main() { //DDRB=0XFF; SREG|=0X80; TIMSK=0X04; timer1_init(); while(1) {; } } 2、AD转换+数码管显示 /***************************************************************************/

/*ADC测试程序*/ /*目标器件:ATmega128 */ /*晶振:RC 8MHZ */ /*编译环境:ICCA VR 7.13A */ /*E-Mail:number007cool@https://www.360docs.net/doc/5913388321.html, */ /*时间:2010年11月13日*/ //Aref接A VCC(+5V),采用Aref作参考电压 /*用数码管显示AD转换的结果*/ /***************************************************************************/ /*********************************包含头文件********************************/ #include #include /********************************数码管段码表*******************************/ extern const unsigned char tab[]={0x3f,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07, 0x7F,0x6F}; /*********************************全局变量**********************************/ unsigned int adc_rel=0; /**************************************************************************** 函数功能:ADC初始化函数 入口参数: 出口参数: ****************************************************************************/ void adc_init(void) { DDRF&=0XFE; //PORTF0设置为输入,即作为ADC0口输入模拟电压 PORTF&=0XFE; //PORTF0设置为输入低电平 ADCSRA=0x00; //关ADC ADMUX = 0X00; //采用Aref作为参考电压,ADC0单端输入,右对齐 ACSR=(1<

C 语言整人代码大全

C 语言整人代码大全WScript.Echo("嘿,谢谢你打开我哦,我等你很久 拉!"&TSName) WScript.Echo("你是可爱的小朋吗?") WScript.Echo("哈,我想你拉,这你都不知道吗?") 顶 举报| 2011-06-01 20:46回复 菊花爆开 电白自学 2楼 WScript.Echo("怎么才来,说~是不是不关心我") WScript.Echo("哼,我生气拉,等你这么久,心都凉啦。") WScript.Echo("小强很生气,后果很严重哦。") WScript.Echo("嘿嘿!你也会很惨滴哦") WScript.Echo("是不是想清除我?") WScript.Echo("那你要点上50下哦,不过会给你惊喜滴") WScript.Echo("还剩49下,快点点哦") WScript.Echo("还剩48下,快点,小笨蛋!") WScript.Echo("还剩47下对,就这样快点点!") WScript.Echo("还剩46下。你啊就是笨,要快哦,我先不打扰 你工作。") WScript.Echo("还剩45下,记得要快哦!") WScript.Echo("还剩43下") WScript.Echo("还剩42下") WScript.Echo("还剩41下") WScript.Echo("还剩40下") WScript.Echo("还剩39下") WScript.Echo("还剩38下") WScript.Echo("还剩37下") WScript.Echo("还剩36下") WScript.Echo("还剩35下")

WScript.Echo("还剩34下") WScript.Echo("还剩33下") WScript.Echo("还剩32下") WScript.Echo("还剩30下") WScript.Echo("还剩29下") WScript.Echo("还剩28下") WScript.Echo("还剩27下") WScript.Echo("还剩26下") WScript.Echo("还剩25下") WScript.Echo("还剩24下") WScript.Echo("还剩23下") WScript.Echo("还剩22下") WScript.Echo("还剩21下") WScript.Echo("还剩20下") WScript.Echo("还剩19下") WScript.Echo("还剩18下") WScript.Echo("还剩17下") WScript.Echo("还剩16下") WScript.Echo("还剩15下") WScript.Echo("还剩14下") WScript.Echo("还剩13下停停!!!慢点,我有话要说") WScript.Echo("还剩12下,你继续点我就会消失滴") WScript.Echo("还剩11下,以后就看不到我拉。555555") WScript.Echo("还剩10下,你现在可以选择停止!") WScript.Echo("还剩9下。你还点啊,不要我拉?") WScript.Echo("还剩8下,有点伤心拉,干嘛丢弃人家") WScript.Echo("还剩7下。疯了,你有点负意!") WScript.Echo("还剩6下。对。你就点吧,我恨你!") WScript.Echo("还剩5下,不明白,删除我你就好吗?") WScript.Echo("还剩4下!真要删除我?") WScript.Echo("还剩3下。可是我真的很眷恋你。。。") WScript.Echo("还剩2下。不要这么绝情嘛,人家是爱你 的!") WScript.Echo("还剩1下。哼,既然你这么绝情。也别怪我无 义!!!") WScript.Echo("我本因该消失的,不过我留恋你滴芳容,上帝 又给了一次机会。") WScript.Echo("想结素我么?那你就再多点一次") WScript.Echo("想结素我么?那你就再多点一次") WScript.Echo("想结素我么?那你就再多点一次") WScript.Echo("想结素我么?那你就再多点一次")

相关文档
最新文档