范文一:三年级语文教学随堂笔记
三年级小学语文教学
三年级是个过渡时期,从低年级到中年级的转变,教学目标也有了新的变化。如何来上好三年级的语文课,对于我一个刚刚进入教育行业的人来说是一件不容易的事情,我在教学过程中稍有感悟,尝试着把理论性的东西附着到实践中去,打好教学起步阶段的基础。
一、激发学生情趣,引发猜想,也就是创建趣味、和谐的课堂氛围吸引学生,提高教学效果,
三年级的语文教材,教材内容形式多样化。要想让学生一堂课全神贯注的听讲确实不易,就算是好同学也很难做到。老师讲课的时候必须让他们把焦点放在老师身上。开始上课的时候常常觉得力不从心,觉得孩子总是不是那么认真的听课,不能那么专心,开小差,常常半路停下来处理课堂纪律问题。反省觉得是自己纪律没抓好?后来与老教师交流,我开始反思课堂纪律不单是孩子的问题,更多的也是老师的问题,正如所说“我拿什么去吸引你--我的孩子。”我开始注重提高课堂本身的趣味性,更加用心的去好好的备课。你的课有激情,同学们也容易被你的激情所带动,所感染;你的课有意思,同学们才乐意全身心的步入你的课堂,走进乐于学习的世界。所以要用心备课、认真备课,不备好课,不进课堂。
二、培养学生良好的学习习惯和愉快的学习环境,提高学生“自主、合作、探究”学习的能力。
新的教学模式要求老师在课堂上要有小组合作探究的过程,要“以生为本”。教师在新课程中最大的是角色的变化,教师将不再只是知识的传授者和管理者,更是学生发展的促进者和引导者。在新课程中,学生的学习方式从传统的接受学习向探究学习转变,而教师的工作就在于帮助孩子们确定适当的学习目标,并确定和协调达到目标的最佳途径;知道学生养成良好的学习习惯,掌握学习的策略和发展能力;创设丰富的教学情境,激发学生的学习动机和学习兴趣,充分调动学生的学习积极性。
孩子的成长基本上得益于自己的学习。要大胆放手,让学生成为学习的主人,在课堂教学过程中,多采用同桌间互读互讲,小组讨论、一些朗读游戏的方式拓宽他们的合作能力。在小组长的带领下去发掘问题去解决问题。再者多问一些有创建性的问题来启发学生的思维。老师本身在这方面也得下苦功夫去研究,哪些问题是可以问的,如何问?学生会有哪些答案,是否能达到自己想要的教学效果?
三、鼓励学生多阅读课外书籍,同时自己也要多读、多看、多思考。
阅读是一个很重要的环节,鼓励学生多读多看,同时开设小小读书交流会或是让学生写读书笔记。既能培养学生的口语交际的能力,让他们向同伴介绍自己看过的书;又能帮助学生更好地学好三年级的新增内容--作文,让他们把写读书笔记当成习惯积累,也当成一种练笔。
当今,是高科技的信息社会,学生可以通过各种渠道获取知识,开阔视野。学生素质的提高对老师也有了更高的要求,教材的内容更是从古到今,包罗万象,这就要求我们每一位教师要力争使自己成为一名学者。在学生眼里不仅是知识的传播者,更要是智慧的化身,无事无物不晓。要使自己成为一名学者,平时应该多读书、多积累、多思考、多实践、多总结。更要重视新教材中参考资料的学习,因为这与学生的学习有着直接的联系。渊博的知识,是每一位老师教好书的关键所在。
范文二:AVR随堂笔记
因为51单片机的IO端口大部分都是准双向口 在复位时全部输出高电平 对端口的输入和
输出操作也是直接通过IO端口的地址进行的
AVR的IO端口是标准的双向口 在复位时所有端口处于高阻态 AVR的每个端口对应三个寄
存器 即DDRx(方向寄存器) PORTx(数据寄存器) PINx(读入 / 输入寄存器)
在使用AVR单片机之前 一定要根据引脚功能对相应的端口初始化 否则 端口很可能不
能正常工作
*DDRx寄存器
7 6 5 4 3 2 1 0
DDB7 DDB6 DDB5 DDB4 DDB3 DDB2 DDB1 DDB0 DDRB
R/W R/W R/W R/W R/W R/W R/W R/W
*PORTx寄存器
7 6 5 4 3 2 1 0
PORTB7 PORTB6 PORTB5 PORTB4 PORTB3 PORTB2 PORTB1 PORTB0 PORTB
R/W R/W R/W R/W R/W R/W R/W R/W
*PINx寄存器
7 6 5 4 3 2 1 0
PINB7 PINB6 PINB5 PINB4 PINB3 PINB2 PINB1 PINB0 PINB
R R R R R R R R
作为通用数字IO口使用时 每个引脚都具有三个寄存器位: DDRxn PORTxn PINxn
DDRxn PORTxn PINxn IO 上拉电阻 说明
0 0 - 输入 无 高阻态
0 1 - 输入 有 带上拉的输入
1 0 - 输出 无 输出低电平
1 1 - 输出 无 输出高电平
AVR单片机中对IO进行操作之前需要进行相应的初始化设置 其设置步骤如下:
(1)通过方向寄存器DDRx设置相应的端口为输入或者输出
(2)如果设置为输出的话 把需要输出的数据送往数据寄存器PORTx
(3)如果设置为输入的话 从输入寄存器PINx中读取外部的输入值 同时可以通过设 置PORTx来设置相应的引脚是否需要上拉电阻
ICCAVR头文件的形式为: #include 或 #include 若芯片使用的不是
mega类 则使用#include 若是mega类 则为#include
在AVR单片机的使用当中有一个重要的头文件 macros.h 该头文件定义了一些常用的宏
如BIT(x) 以及看门狗复位 开关全局中断等等
使用方法:
#include
如果在程序中要使用BIT(x) 则必须包含该头文件
AVR单片机中同样可以对单个IO口进行操作 其具体方法如下:
(1)PORTA |= (1
(2) PORTA |= BIT(3)
(3) PORTA |= BIT(PORTA3)
以上三种方法都是让它们第四位置1[0 1 2 3]
按位或
用于打开某一位或某几位 即置位
例如: PORTA |= 0X80; // 将端口A的第七位置“ 1 ”
不管该位之前是什么状态 都会将其置 1
按位取反
用于关闭某一位或某几位 即清位 例如: PORTA &= ~0X80; // 将端口A的第七位清零
0X80(10000000)按位取反后是0x7f(01111111)
不管该位之前是什么状态 都会将其清零
按位异或
用于翻转某一位或某几位
例如: PORTA ^= 0X80; // 将端口A的第七位翻转
如果原来是 “ 1 ” 翻转之后是 “ 0 ”
如果原来是 “ 0 ” 翻转之后是 “ 1 ”
按位与
用于检查某一位或某几位是否为 1 例如: if(PINA & 0X80); // 检查PA.7是否为 1
一般用于条件或判断语句中 用于检查某一位是否为 1
AVR单片机熔丝位简介
熔丝位状态为 1 表示未编程 熔丝位状态为 0 表示编程 因为在AVR的器件手册中是使用已编程(Programmed)和未编程(Unprogrammed)定义熔丝位的
AVR单片机的熔丝位是可以多次编程的
AVR单片机芯片加密锁定之后(LB2 / LB1 = 1 / 0 0 / 0)不能通过任何方式读取芯片内部的Flash 和EEPROM的数据的
下载编程的正确操作步骤是: 下载运行代码和数据 配置相关的熔丝位 最后配置芯片的加密位
芯片加密熔丝位简介
加密锁定位 保护类型(芯片加密)
加密锁定方式 LB2 LB1
1(出厂设置) 1 1 无任何编程加密锁定保护
2 1 0 禁止串 / 并行方式的再编程
3 0 0 禁止串 / 并行方式的再编程和校验
功能熔丝位简介
熔丝位名称 1 0 出厂设置 WDTON 看门狗由程序控制 看门狗始终工作 1
程序只能调节溢出时间
SPIEN 禁止ISP串行编程 允许ISP串行编程 0
JTAGEN 禁止JTAG 允许JTAG 0
EESAVE 芯片擦除时同时擦除 芯片擦除时时不擦除 1
EEPROM数据 EEPROM数据
BODLEVEL 低电压检测门限电平 低电压检测门限电平 1
为2.7v 为4.0v
OCDEN 禁止JTAG口的在线调 允许JTAG口的在线调 1
试功能 试功能
Bootloader熔丝位简介
熔丝位名称 1 0
BootRst 芯片上电后从地址 芯片上电后从地址 1
0x0000开始执行 Boot开始执行
Bootloader区域大小设置
BooTSZ1 BooTSZ1 BooT区大小 起始地址 出厂设置
0 0 1024 0x1C00
0 1 512 0x1E00
1 0 256 0x1F00 四种都是 00
1 1 128 0x1F80
系统时钟源选择熔丝位
系统时钟源 CKSEL[3:0]
外接石英 / 陶瓷晶体 1111 ~ 1010
外接低频晶体 1001
(32.768 KHz) 出厂设置
外接RC振荡器 1000 - 0101
使用可校准的内部RC振荡器 0100 - 0001 (出厂设置0001 1MHz)
外部时钟 0
使用外部晶体时的工作模式配置
熔丝位 工作频率范围MHz 适用晶体 C1 C2容量 / pF
CKPOT CKSEL[3:1]
1 101 0.4-0.9(MHz) 注释(pF) 陶瓷晶体
1 110 0.9-3.0 12-22
1 111 3.0-8.0 12-22
0 101-111 >=1.0 12-22 都是石英晶体
当CKPOT = 0时 振荡器的输出振幅较大 适用于干扰大的场合 反之 振荡器的输出较小 可以降低功耗 对外电磁辐射也较小
使用外部晶振时唤醒脉冲和延时时间的选择
熔丝位 掉电和省电 复位延时启动时间 适合应用条件
CKSEL0 SUT[1:0] 模式唤醒 (Vcc=5v) 0 00 258CK 4.1ms 陶瓷振荡器快速上升电源 0 01 258CK 65ms 陶瓷振荡器慢速上升电源 0 10 1K CK ---- 陶瓷振荡器BOD方式
0 11 1K CK 4.1ms 陶瓷振荡器快速上升电源 1 00 1K CK 65ms 陶瓷振荡器慢速上升电源 1 01 16K CK ---- 陶瓷振荡器BOD方式
1 10 16K CK 4.1ms 陶瓷振荡器快速上升电源 1 11 16K CK 65ms 陶瓷振荡器慢速上升电源 C51向ICCAVR快速过度
头文件 把REG52.H替换成相应的AVR头文件 如iom16v.h
对C52中的bit sbit的数据类型进行处理 因为ICCAVR不支持bit和sbit数据类型 可以用位运算和BIT来处理
中断系统 定时器与单片机结构密切相关的代码 需要重新修改
和延时 定时相关的函数需要进行一些修改 因为AVR的运算速度比51单片机要快的很多 其余与CPU体系结构无关的代码 可以直接使用
AVR单片机中断的原理
ATmega16单片机具有21个中断源 每个中断源都有一个独立的中断向量作为中断服务程序的入口地址 而且所有的中断源都有自己独立的使能位 如果全局中断和相应的中断使能位都置位 则在中断标志位时执行中断服务程序
一个中断产生后 全局中断使能位将被清零 后续的中断被屏蔽 用户可以在中断服务程序里面对置位从而开发中断 在中断返回后全局中断位将重新位置
ATmega16单片机中断向量表介绍
向量号 程序地址 中断源 中断定义
1 S000 RESET 外部引脚电平引发的复位 上电复位 掉电检 测复位 看门狗复位 以及JTAG AVR复位 2 S002 INT0 外部中断请求0
3 S004 INT1 外部中断请求1
4 S006 TIMER2 COMP 定时器 / 计数器2比较匹配
5 S008 TIMER2 OVF 定时器 / 计数器2溢出
6 S00A TIMER1 CAPY 定时器 / 计数器1事件捕捉
7 S00C TIMER1 COMPA 定时器 / 计数器1比较匹配A
8 S00E TIMER1 COMPB 定时器 / 计数器1比较匹配B
9 S010 TIMER1 OVF 定时器 / 计数器1溢出
10 S012 TIMER0 OVF 定时器 / 计数器0溢出
11 S014 SPI STC SPI串行传输结束
12 S016 USART RXC USART Rx结束
13 S018 USART UDRE USART数据寄存器空
14 S01A UART TXC USART Tx结束
15 S01C ADC ADC转换结束
16 S01E EE_RDY EEPROM就绪
17 S020 ANA_COMP 模拟比较器
18 S022 TWI 两线串行接口 ( IIC )
19 S024 INT2 外部中断请求2
20 S026 TIMER0 COMP 定时器 / 计时器比较匹配
21 S028 SPM_RDY 保存程序存储器内容就绪
AVR单片机外部中断
ATmega16单片机具有3个外部中断 分别是INT0 INT1 INT2这三个外部中断都是由单片机的引脚触发的
需注意的是 如果允许外部中断的话 即使是INT0 INT1 INT2这3个引脚都设置为输出方式 外部中断也会触发
INT0 INT1外部中断可以选择的触发方式有上升沿触发 下降沿触发以及低电平触发 INT2只有跳变沿触发 没有电平触发
使用外部中断涉及到的寄存器有 MCU控制寄存器MCUCR MCU控制欲状态寄存器MCUCSR 通用中断控制寄存器CICR 通用中断状态寄存器GIFR
MCU控制寄存器MCUCR
Bit 7 6 5 4 3 2 1 0
SM2 SE SM1 SM0 ISC11 ISC10 ISC01 ISC00
Read/Write R/W R/W R/W R/W R/W R/W R/W R/W
lnitial Vaiue 0 0 0 0 0 0 0 0
为[3:2] - ISC1[1:0]外部中断1触发方式选择
ISC11 ISC10 说明
0 0 INT1引脚为低电平时产生中断请求
0 1 INT1引脚上的任意逻辑电平变化都会产生中断请求
1 0 INT1引脚的下降沿产生中断请求
1 1 INT1引脚的上升沿产生中断请求
MCU控制与状态寄存器MCUCSR
Bit 7 6 5 4 3 2 1 0
JTD ISC2 - JTRF WDRF BORF ECTRF PORF
Read/Write R/W R/W R R/W R/W R/W R/W R/W
lnitial Vaiue 0 0 0 see Bit Descriotion
位6 -- ISC2 外部中断2触发方式 外部中断2由外部引脚INT2激发 若ISC2清零 则INT2的下降沿激活中断 若ISC2置1 则INT2的上升沿激活中断
通用中断控制寄存器GICR
Bit 7 6 5 4 3 2 1 0
INT1 INT0 INT2 - - - IVSEL IVCE
Read/Write R/W R/W R/W R R R R/W R/W
lnitial Vaiue 0 0 0 0 0 0 0 0
位7 -- INT1 时能外部中断1请求 当INT1为1且状态寄存器SREG的标志置位时 相应的外部引脚中断使能 只要使能 即使INT1引脚被配置为输出 一旦引脚电平发生了相应的变化 中断就将产生
位6 -- INT0 时能外部中断0请求 当INT0为1且状态寄存器SREG的标志置位时 相应的外部引脚中断使能 只要使能 即使INT1引脚被配置为输出 一旦引脚电平发生了相应的变化 中断就将产生
位5 -- INT2 时能外部中断2请求 当INT2为1且状态寄存器SREG的标志置位时 相应的外部引脚中断使能 只要使能 即使INT1引脚被配置为输出 一旦引脚电平发生了相应的变化 中断就将产生
通用中断状态寄存器GIFR
Bit 7 6 5 4 3 2 1 0
INTF1 INTF0 INTF2 - - - - -
Read/Write R/W R/W R/W R R R R R
lnitial Vaiue 0 0 0 0 0 0 0 0
位7 -- INTF1 外部中断1标志位 INT1引脚电平发生跳变时触发中断请求 并置位相应的中断标志INTF1 如果SREG的位I以及相应的中断使能位INT1为1 MCU立即跳转到相应的中断向量
位6 -- INTF0 外部中断0标志位 INT0引脚电平发生跳变时触发中断请求 并置位相应的中断标志INTF0 如果SREG的位I以及相应的中断使能位INT0为1 MCU立即跳转到相应的中断向量
位5 -- INTF2 外部中断2标志位 INT2引脚电平发生跳变时触发中断请求 并置位相应的中断标志INTF2 如果SREG的位I以及相应的中断使能位INT2为1 MCU立即跳转到相应的中断向量
状态寄存器SREG
Bit 7 6 5 4 3 2 1 0
I T H S V N Z C
Read/Write R/W R/W R/W R/W R/W R/W R/W R/W
lnitial Vaiue 0 0 0 0 0 0 0 0
位7 -- I 全局中断使能位 置位时使能全局中断 单独的中断使能由其他独立的寄存器控制 如果I被清零 则不论单独中断标识位置位与否 都不会产生中断 任意一个中断产生之后 I都将被清零 而执行RETI指令后I被置位以重新使能中断 I也可以通过SEI指令和CLI指令来置位和清零
在使用任何中断之前都必须将全局中断使能位置位
使能语句 SREG |= BIT(7);
中断服务函数怎么写
用ICCAVR编程 在C中只要用 #pragma伪指令和中断向量说明中断服务程序入口地址即可 语法格式
#pragma interrupt_handle :
例如定义INT0中断服务程序
#pragma interrupt_handle int0_isr: 2
void int0_isr(void)
{
// INT0中断服务函数
}
外部中断使用的步骤
设置外部中断的触发模式 ( 寄存器MCUCR )
使能外部中断 ( 寄存器GICR )
设置中断管脚 ( 是否需要上拉电阻 )
打开全局中断 ( 寄存器SREG )
选择中断号 写中断服务程序
AVR单片机片内EEPROM
Atmega16单片机内部具有512字节的EEPROM 它一个独立的数据空间 拥有至少10万次写入 / 擦除寿命
地址范围是0x0000 - 0x01ff
数据读写一字节为单位
通过专用的指令来实现对EEPROM的操作
可也可以通过ISP JTAG 并行编程的方式实现EEPROM的写入和读出
采用内部RC振荡器的1MHz作为访问的定时时钟 其编程使用周期8448个周期
8.5ms
操作过程中尽量关闭中断 保持时序不被打断
EEPROM存储器相关的寄存器
EEPROM地址寄存器EEARH EEARL 时间大约
Bit 15 14 13 12 11 10 9 8
- - - - - - - EEAR8 EEARH EEAR7 EEAR6 EEAR5 EEAR4 EEAR3 EEAR2 EEAR1 EEAR0 EEARL 7 6 5 4 3 2 1 0
Read/Write R R R R R R R R/W
R/W R/W R/W R/W R/W R/W R/W R/W
lnitial Vaiue 0 0 0 0 0 0 0 x x x x x x x x x
EEPROM地址寄存器EEAR用于指定某个EEPROM单元的地址 512字节EEPROM线性编址为0x0000 - 0x01ff 地址寄存器EEAR可读可写 EEAR寄存器的初值没有意义 在访问EEPROM之前必须为其指定正确的地址 EEPROM存储器相关的寄存器 EEPROM数据寄存器EEDR
Bit 7 6 5 4 3 2 1 0 MSB LSB
Read/Write R/W R/W R/W R/W R/W R/W R/W R/W lnitial Vaiue 0 0 0 0 0 0 0 0
EEPROM数据寄存器EEDR存放即将写入EEPROM或者从EEPROM读出的某个单元的数据 写入或者读出的地址由EEPROM的地址寄存器EEAR给出 EEPROM按字节进行读写 EEPROM数据寄存器EEDR可读可写 初始值为0x00 EEPROM控制寄存器EECR
Bit 7 6 5 4 3 2 1 0 - - - - EERIE EEMWE EEWE EERE Read/Write R R R R R/W R/W R/W R/W lnitial Vaiue 0 0 0 0 0 0 x 0 EEPROM控制寄存器EECR用于控制单片机对EEPROM的操作
位3 - EERIE EEPROM中断准备好使能位 当EERIE位置1而且全局中断置位时 如果EEWE为0 则单片机产生一个中断表示写操作完成 EEPROM存储器相关的寄存器
位2 - EEMWE EEPROM主写使能位 当EEMWE为1时 设置EEWE为1将把EEDR中的数据写入EEAR所选择的地址空间中 如果EEMWE为0 则EEWE无效 EEMWE在被用户置1后的4个时钟周期后 被硬件清零 EEPROM存储器相关的寄存器
位1 - EEWE EEPROM写使能位 当EEPROM的地址和数据准备好之后 用户必须设置EEWE为1 才能将数据写入EEPROM中 设置EEWE为1之前 EEMWE必须置1 否则写入操作无效 EEPROM数据写入操作如下 等待EEWE为0
把EEPROM的地址写入EEAR 把EEPROM的数据写入EEDR 置EEMWE为1
在置EEMWE为1的4个时钟周期内 向EEWE中写入1
位0 - EERE EEPROM读使能位 EERE用于对EEPROM的数据读取 当EEAR中设置了EEPROM的读取地址后 置位EERE将执行读操作 当EEPROM中的数据被读取到数据寄存器EEDR中后 EERE被硬件清零 用户可以通过查询此位来判断读操作是否完成 AVR单片机片内ADC简介
ATmega16单片机集成了一个10位的逐次逼近型A/D装换器 A/D装换器与一个8位通道多路复用器连接 能对来自端口A的8路单端输入电压进行采样 8路可选的单端输入通道 7路差分输入通道
ADC转换结果的读取可设置为左端对齐 在最高精度下可达到15KSPS/S的采样速率 可选择的内部2.56V的ADC参考电压源 自由连接转换模式和单次装换模式
ADC自动转换触发模式选择 ADC转换完成中断 ADC的供电和参考电压
ADC功能单元独立的专用模拟电源引脚AVCC供电 AVCC和VCC的电压差别不能大于+_0.3V ADC装换的参考电源可采用芯片内部的2.56V参考电源 或采用AVCC 也可采用外部参考电源 使用外部参考电源时 外部参考电源有引脚AREF接入 使用内部电压参考源时 可以通过在AREF引脚外部并接一个电容提高ADC的抗干扰性能 与ADC有关的寄存器
ADC多路复用器选择寄存器ADMUX
7 6 5 4 3 2 1 0 REFS1 REFS0 ADLAR MUX4 MUX3 MUX2 MUX1 MUX0 R/W R/W R/W R/W R/W R/W R/W R/W 0
0 0 0 0 0
位[7:6] - REFS[1:0]:ADC参考电压选择 这两位选择ADC的参考电压 如果在装换过程中改变了设置 则只有等到当前装换结束之后新的设置才会起作用 如果在AREF脚上施加了外部参考电压 则内部参考电压不能被选择 与ADC有关的寄存器 ADC参考电压选择位
REFS1 REFS0 参考电压选择 0 0 AREF 内部基准源关闭 0 1 AVCC AREF外接滤波电容 1 0 保留
1 1 2.56V内部基准电压源 AVREF引脚外接滤波电容
位5 - ADLAR: ADC转换结果对齐位 ADLAR位影响ADC转换结果 在ADC数据寄存器中的存放形式 ADLAR置位时转换结果位左对齐 否则位右对齐
位[4:0] - MUX[4:0]:模拟通道与增益选择位 这几位选择连接到ADC模拟输入通道 也可以对差分通道增益进行设置 如果在转换过程中改变了设置 则只有等到当前装换结束之后新的设置才会起作用 具体的设置表可以查看数据手册 与ADC有关的寄存器
ADC控制盒状态寄存器ADCSRA
7 6 5 4 3 2 1 0
ADEN ADSC ADATE ADIF ADIE ADPS2 ADPS1 ADPS0 R/W R/W R/W R/W R/W R/W R/W R/W 0
0 0 0 0 0
位7 - ADEN: ADC使能位 ADCEN置位即启动ADC 否则ADC功能关闭
位6 - ADSC: ADC开始转换 在单次转换模式下 ADSC置位将启动一次ADC转换 在连续转换模式下 ADSC置位将启动首次转换
位5 - ADATE: ADC自动触发使能 ADATE置位将启动ADC自动触发功能 触发信号的上升沿启动ADC转换
位4 - ADIF: ADC中断标志位 ADC转换结束且数据寄存器被更新后 ADIF置位 如果ADIE及AREG寄存器中的全局使能位I被置位 则ADC转换结束中断服务程序将被执行 同时ADIF硬件清零 也可以通过软件写“1”清零
位3 - ADIE: ADC中断使能位 若ADIE及SREG中的I置位 则ADC转换结束中断将被使能 位2[2:0] - ADPA[2:0]: ADC预分频选择位 这3位决定ADC输入时钟与CPU时钟之间的分频系数 ADC分频系数选择如下表: ADPS2 0 0 0 0 1 1 1 1
ADPS2 0 0 1 1 0 0 1 1
ADPS2 0 1 0 1 0 1 0 1
分频系数 2 2 4 8 16 32 64 128
ADC数据存储器ADCL及ADCH
ADC转换结束后 转换结果将储存在这两个寄存器中
在读取ADCL之后 ADC数据存储器需要等到ADCH也被读出之后才会更新数据寄存器 因此 如果转换结果为左对齐而只需要8位精度 那么仅需要读取ADCH就足够了 否则必须ADCH
然后再读ADCL
ADMUX寄存器中的ADLAR及MUXn会影响转换结果在数据寄存器中的存放形式 ADC数据存储器ADCL及ADCH 当ADLAR = 0;
Bit 15 14 13 12 11 10 9 8
- - - - - - ADC9 ADC8 ADCH
ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADC1 ADC0 ADCL 7 6 5 4 3 2 1 0
Read/Write R R R R R R R R
R R R R R R R R
lnitial Vaiue 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
当ADLAR = 1;
Bit 15 14 13 12 11 10 9 8 ADCH ADC9 ADC8 ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADCL
ADC1 ADC0 - - - - - - 7 6 5 4 3 2 1 0
Read/Write R R R R R R R R
R R R R R R R R
lnitial Vaiue 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
特殊功能IO寄存器SFIOR
Bit 7 6 5 4 3 2 1 0
ADTS2 ADTS1 ADTS0 - ACME PUD PSR2 PSR10 SFIOR Read/Write R/W R/W R/W R R/W R/W R/W R/W
lnitial Vaiue 0 0 0 0 0 0 0 0 位[7:5] - ADTS[2:0]: ADC自动触发源选择 ADTS2 0 0 0 0 1 1 1 1
ADTS1 0 0 1 1 0 0 1 1
ADTS0 0 1 0 1 0 1 0 1
触发源 连续转换模式 模拟比较器 外部中断请求0
定时器/计数器0比较匹配 定时器/计数器0溢出 定时器/计数器比较匹配B 定时器/计数器1溢出 定时器/计数器1捕捉事件
ADC的使用步骤 1.ADC输入端口初始化
2.基准电压设置 数据对齐方式 通道选择(寄存器ADMUX) 3.AD使能 启动转换 及中断设置(寄存器ADCSRA) 4.触发源选择(寄存器SFIOR)
5.选择中断号 编写中断服务函数 读取ADC转换结果(ADCH ADCL) 注意点: 从ADCH和ADCL中读到的数据时BCD码格式的 ATmega16定时器
ATmega16单片机有3个定时/计数器: T/C0 T/C1和T/C2 其中T/C0和T/C2是两个8位的定时/计数器 而T/C1是16位的定时/计数器 这里以T/C1为例讲解 普通模式 CTC模式 快速PWM模式 相位修正PWM模式 相位频率修正PWM模式 输入捕捉模式
普通模式
普通模式是最简单的工作模式 和51单片机的定时计数器类似 根据设定的时钟频率 每过一个时钟 计数寄存器数值加1
16位计数器TCNT1一直累加1 当计数到0xFFFF之后 由于计数值溢出 TCNT1简单的返回到最小值0x0000重新开始计数 普通模式用到的寄存器 1.T/C1控制寄存器TCCRIB
Bit 7 6 5 4 3 2 1 0
ICNC1 ICES1 - WGM13 WGM12 GS12 CS11 CS10 读/写 R/W R/W R R/W R/W R/W R/W R/W 初始值 0 0 0 0 0 0 0 0 位2: 0 - CS1[2:0]: T/C1时钟选择 CS12 CS11 CS10 说明
0 0 0 无时钟源(T/C停止) 0 0 1 CLK i/o /1(无预分频) 0 1 0 CLK i/o /8(来自预分频器) 0 1 1 CLK i/o /64(来自预分频器) 1 0 0 CLK i/o /256(来自预分频器) 1 0 1 CLK i/o /1024(来自预分频器) 1 1 0 外部T1引脚 下降沿驱动 1 1 1 外部T1引脚 上降沿驱动 2.计数存储器TCNT1H和TCNT1L
Bit 7 6 5 4 3 2 1 0 TCNT1[15:8] TCNT1[7:0] 3.T/C1中断屏蔽寄存器TIMSK
Bit 7 6 5 4 3 2 1 0
TCCR1B TCNT1H TCNT1L
OCIE2 TOIE2 TICIE1 OCIE1A OCIE1B TOIE1 OCIE0 TOIE1 TIMSK 读/写 R/W R/W R/W R/W R/W R/W R/W R/W 初始值 0 0 0 0 0 0 0 0
位2 - TOIE1: T/C1溢出中断使能位 当该位被置1且状态寄存器中的I位被置1时 T/C1的溢出中断使能 一旦TIFR的TOV1置位 CPU即开始执行T/C1溢出中断服务程序 普通模式的使用方法
1.根据需要选择时钟源(寄存器TCCRIB)
2.根据定时时间和时钟源确定定时器的初值(寄存器TCNT1H和TCNT1L) 3.设置中断使能位
4.选择中断号 编写中断服务程序 注意在中断服务函数里面需要重新设置定时器初值 10-1
AVR 8 - 2 程序未写 AVR 9 - 2
范文三:ASPNET随堂笔记
2011-7-18 随堂笔记
复习委托: 注册多个委托用+= 或删除一个委托用
-=
2011-7-20 随堂笔记
ASP.Net是一种动态网页技术,在服务器端运行.Net代码,动态生成HTML,然后响应给浏览器;
三大块模式: 一般处理程序 WebForm(使用慢慢减少) MVC 比前一种运行效率相对来说高一些.
一般处理程序什么时候用: 凡是不需要返回大量的HTML代码的时候用一般处理程序; WEBFORM:需要主要存放大量的HTML代码的时候用;
一般处理程序: 是一个实现了SYSTEM.WEB.IhttpHandler特殊接口的类;
任何一个实现了IhttpHandler接口的类都能作为一个外部请求的目标程序,(反过来说就是凡是没有实现此接口的类就不能被浏览器请求);
一般处理程序: 实现了IhttpHandler接口
contentType属性的作用: 就是设置服务器向浏览器发出的响应报文的contentType属性, 浏览器根据此属性内容,使用不同方式来处理 【响应报文体】
此图就是以本文格式处理
URL传值:表单的method属性设为get时。 用户名和密码框的值会在地址栏里显示出来。 这就是URL传值;
可以通过请求报文里看出来 如下图:
也可以在新的地址栏里看到,如下图:
也可以写成这样
:
什么时候用Get: 获得; 拿去—当浏览器发送请求报文是为了从服务器获得数据的时候;
什么时候用Post:传递, 发送过去.当浏览器发送请求报文是为了向服务器传送数据的时候用; 用户点击超链接其实也是get请求; 也是URL传参;
Write();向浏览器输出方法括号里传要输出的内容.
Redirect: 重定向;
响应报文里: 状态码是:302 Location:是重定向的页面地址;
Redirect 前面的代码会执行. 但后面的代码不会执行了. 如下图:
但上图第一句话执行时一般看不到.只是在响应报文里会有响应报文体, 但之前的代码如果是修改数据库一类的可以通过查询数据库里的内容证实已修改; 但第二句重定向到谷歌的代码就不会执行了.
End();立既结束代码运行,马上将response 中缓存的数据输出到浏览器;
如上图: 只输出北京天气好等. 不会输出FORM表单中的值了; 如果没用end()方法 会把两句代码的输出内容都输出到浏览器.
2011-7-23
重定向: 服务器发送命令到浏览器(302 ,Location)
如果设置控件的READONLY 或DISABLE属性的话,浏览器也不会提交该控件的值;
浏览器每次请求服务器的一个页面类时,服务器都会创建一个该类的对象,并调用里面的方法执行,最后返回输出结果给浏览器,然后对象被销毁.断开套接字连接;
Http短连接:服务器在每次响应完浏览器的一个请求后会立马关闭当前连接(Socket);
短连接缺点:尽管管户只是想访问一个页面1.Html,但依然向浏览器发送了多次新的连接请求,建功立了多次新的连接,消耗了双方的时间和资源;
长连接:服务器不会立刻在发送完数据后关闭连接通闭(socket),而是会等一小段时间(这段时间由服务器决定的),如果在这段时间内,如果相同浏览器再次发送请求过来,那么继续使用此连接通道向浏览器输出数据,然后再等一段时间,直到等待的相同时间内没有新的请求过来,那么服务器才会关闭通道
一旦使用重定向,就不会向浏览器输出前面write方法里的内容了;
2011-7-24
上传图片的时候一定要修改Form的enctype=Multipart属性
一般处理程序水印图片代码:
下图默认输出一个120*40的默认黑色的水印图片: 注意导入的两个命名空间;
一般处理程序验证码图片:
WEBFORM:
上面的文件是前台文件, 下面的文件是后台文件
如果不写Runat属性的话.后面代里是访问不到此
控件的.
前台页面想编写C#代码在 在这个标签中间写如下
:
前台文件和后台文件在运行的时候根本就是不个类.是两个分开的类; 前台文件继承后台文件; 如下两个图
因为第一个图中的方法的访问修饰符是受保护的 在第二个图中的前台文件中能访问到. 所以是继承关系
如果只想在前台文件里输出一个值.可以这样写
变量的值定义在后台文件里;也可以用下图的方法写是一样的
效果
每个前台文件的自动生成的第一句话里如下图
中的 这个属性的值此属性单词是继承的意思
;
Runat=sever的控件在编译的时候已经被编译成变量生成到父类中了. 所以可以在后台访问前台的Runat=sever控件;
被请求时,页面控件对象树的生成:
控件树负责组织整个页面的内容.(BuildControTree() 生成控件树的方法);
在浏览器的DOM树中,其实每个节点都有一个ChildNodes集合属性,用来保存当前节点的子节点们;
前台页面类继承于后面页面类,后台页面类继承于PAGE类? TemplateControl?Controls(包含ControlCollection集合属性)
“呈现”?将服务器端控件类对象转成对应的HTML代码;
页面类对象,通过控件树的方法,帮我们封装了整个页面的HTML源代码和C#代码.(都封装到页面类对象的控件集合属性中, 那么要生成页面的HTML代码的时候,只需要循环遍历整个控件树,并调用每个控件的_Render_方法获得每个控件的HTML代码,就可以拼成一个完整的页面HTML代码了.)
就是指的继承的后台文件的名字
关键问题: 服务器调用页面类对象的什么东西来生成HTML代码呢? ?控件树,调用页面对象的RENDER方法要循环遍历控件树,并分别调用每个控件的相应的RENDER方法来产生个每个控件对应的HTML代码.最后组成整个页面的HTML代码;
下图是: 为什么在后台页面里写的输出字符串会在前台页面的控件之前显示 因为有缓存区
Request其他成员
Response成员
Cookie的实现原理:就是通过Http协议请求报文头的响应报文头实现的
.
2011-7-27随堂笔记
Session
创建一个Session池 把Session对象存到 Session池中, 使用的是进程内的缓存来保存Session;(就是当前的framework)
不同的浏览器访问同一个服务器时.会根据分配的不同的SessionID 浏览器会将前面分给配给他的sessionId通过Cookie的方式发回到浏览器内存中保存(如果在硬盘上存会有失效时间).下次再来访问服务器时会带着这个SessionId来, 服务器根据带来的SessioId来判断是哪个用户;如下图
:
设置session的失效时间可以在配置文件中找到下图来设置, 值是以分钟为单位的: 默认20分钟
或者在后台代码中写也可以.如果不给值默认为20分钟
;
当浏览器访问网站页面,会自动的将属于该网站的SessionID发送到服务器,服务器在运行页面的事后,会自动的根据发来的SessionID到Session池中找到对应的Session对象,并将里面保存的值赋值给页面的session属性,这样我们就可以通过Session属性来访问用户储存的值了.
不同浏览器窗体.是不同的进程. 不共享缓存,而SessionID是以缓存Cookie的方式储存在浏览器进程的缓存里的,所以不同窗体不能共享同一个sessionID, 造成在服务器无法访问相同的Session对象的结果.
如果浏览器禁用Cookie就可以启用Url来传递SessionID
一般处理程序如果想用Session必须实现一个接口: 命名空间接口名
:
Application:
Application是服务器端一个共享的对象,所有页面,所有客户都能任意访问,但关键的问题也出来了:那就是如果同时有多个用户操作的话,容易出现数据问题.所以为了解决这个问题,我们在操作Application 的时候,先要加锁:Lock(),操作完后要解锁Unlock();
2011-7-30
APS.NET服务端控件: 都继承了Control类和webcontrol类 ClientID: 服务器端生成的浏览器端的控件ID Visiable:是否可见
CssClass:设置文本框的样式属性
基本服务器端控件: Lable: 显示文本
Literal: 展示一段文本 Textbox文本框
当我们使用Server.Excute或Transfer做服务器内部定向的时候,会将当前页面的上下文对象传给目标页面,但是在目标页面中,不能确定为目标页面的回传动作.
2011-8-2
为什么使用验证控件:
当需要让用户输入数据时,用户有可能输入不符合我们程序逻辑要求的信息,所以以我们要对输入进行验证
客户端验证(用户体验,减少服务器端压力)
服务器端验证(防止恶意攻击,客户端JS很容易就可以被绕过)
微软提供了五类验证控件,以后逐个讲解 第一个验证控件:
1 RequiredFieldValidator 非空验证控件 作用: 用于验证一个控件必须填写; 1 使用: 先拖一个验证控件. 2
设置一个件;
3
设置如果验证不通过给用户显示的提示信息;
当text属性没有值的时候,显示的内容会取当text 有值时优先显示text里的值;
Display属性:显示样式 Static 隐藏时占位置
Dynamic 隐藏时不占位置; None:不显示
的值;
属性: 告诉验证控件你要让他检查哪一个用户输入的控
内容不显示时也占位置;
内容不显示时不占页面位置;
SetfocusOnError: 如果验证不通过使被验证控件获得焦点. 值为true 默认为false
initialValue: 验证控件的初始值 当用户输入的内容与初始值相同时,默认为用户没有输入内容;
指示页面上的所有验证控件在服务器端是否验证成功 值为: true 或false
注意:提交后验证控件在服务器端的验证顺序,先执行Page_Load ?再进行验证? 再执行其他事件(比如Button_Click)所以Page.IsValid默认在Page_Load事件中不能使用; 如果想强制验证控件在Page_Load中执行服务器端的验证方法Page.Validate();
第二个验证控件:
CompareValidator比较验证控件:
通用属性同上面的三个属性一样.下面是特有的属性:
Operator属性: 比较是否相等.不相等.大于.小于等一些值; Type属性:以什么类型进行比较
用法一:两个控件进行比较,除了设置上面的属性外.还要设置一个被比较的控件; controlToValidate 设置比较的控件 controlToCompare 设置被比较的控件
注意:除了非空验证控件,当用户输入内容为空时,验证不通过.阻止提交外,其他的验证控件只有当用户输入内容时才会进行验证, 否则的话不进行验证
用法二: 与一个定值进行比较;
除了设置上面的两个Operator / Type属性外
还要设置: ValueToCompare 的值; 比如与一个定值的年龄 18 进行比较 此处的值就填18 也可以在Page_Load中动态设置值;
用法三: 类型检查 检查是否为数值或是日期等 Operator属性:选DateTypeCheck Type: 选值要检查的类型
第三个验证控件:
Rangevalidator用于验证一个范围内的值 设置通用属性:
属性:Type比较的类型: MaxmumValue:最大值 MinimumValue:最小值
第四个验证控件:
RegularExpressionValidator: 用于验证用户输入的格式(正则表达式) 设置三个通用属性:
ValidationExpression: 填正则表达也可以选VS提供的一些常用的.
第五个验证控件:
CustomValidator: 自定义验证控件
注意:不设置controlToValidate 也不会报错的验证控件;
设置ClientValidationFunction属性:指向自己写的客户端脚本; 需要自己写JS脚本代码.不会写可以查MSDN
Onservervalidate:编写服务器端的验证事件;
注意:如果忘了设置以上的两个属性和事件都不会报错;
按钮控件有一个属性:Causes Validation的值设置为false; 不让想验证控件起作用时设置; ValidationGroup属性:
汇总错误信息控件:validation summary Displaymode属性:
如果一个类没有办法实例化, 一般情况下这个类会给我们提供一个静态的方法来产生这个类的一个子类;
用户控件: 功能复用, 并且在使用的时候可以改变用户控件的位置;
母版页: 公共部分写在母版页面上,位置就固定了. 不能改变内容页的内容了.
Website不用重新生成;
WebApplication 需要重新生成;
Session 和application存在服务器端;
Cookie存在客户端
分为持久:存在磁盘上,关闭浏览器cookie不会丢掉, 这个cookie只能过期;
临时cookie存在浏览器的内存中. 关闭浏览器就会消失;sessionID就是借助这个传输
记住我:
第一种做法:在用户表中加一个字段比如叫aKey.选用户选中记住我时,生成一个GUID做为aKey存入数据库和客户端的cookie中,下次如果用户客户端有这个akey并且在我们的数据
库中可以查到,则可以,则证明这个akey是我们写的,可以为用户自动登录;
缺点:
不能实现用户在两台电脑上同时选中记住我时. 为其自动登录; 当用户改密码时.记住我不会失效;
第二种方法: 把用户名和密码写到客户端
设: 数据库中的密码为P 随样一个两位的字符 S
加密后的结果为 Md5(s+md5(P))
范文四:PS随堂笔记
2014年3月4日
图像大小:先改高度。图像可以变小,最好不要变大。
画布大小用于裁剪。要注意要那边紧哪边裁剪。
小二寸:3.5X4.5
2014年3月11日
容差越小,取得颜色范围越小
2014年3月18日
按ALT键拖拽可以复制已选面积
用矩形选区按SHIFT可以拖正方形
按ALT可从中心开始向外扩张
羽化:增加选区边缘的半透明度
颜色填充快捷键:前景色:ALT+BACKSPACE 背景色:CTRL+BACKSPAC
取消选区为:CTRL+D
改变画笔的宽度为中括号建
前景色与背景色改变的是X键
画笔工具:F5
2014年3月25日
有透明区域的图片要保存为PNG模式
历史记录画笔可用来檫仿制图章的图
窗口中的历史记录可以设置历史记录画笔可以擦哪一步之后
滤镜-模糊-高斯模糊-然后用历史记录画笔擦出想要的对象 (可以用来突出人物)
渐变工具的快捷键是G(重要)
点击渐变带可以自定义颜色
上方的色标是用来控制不透明度的
ctrl+R-标尺
关于矩形(形状)工具:
第三个(填充像素)是像素,和画笔画的没有区别
第二个(路径)没有任何像素,就是方形的辅助线
第一个(形状图层)是对整张画布做得填充
2014年4月1日
创作时要在图层上而不是背景上
图层前面的眼睛具有隐藏功能
想隐藏多个图层时,可以点住第一个眼睛,然后往下拖拽
图层叠加顺序可以调整,最上面的图层在最上面,手动拖拽
想拖拽画布上的图层,必须要选中它所在的图层(移动工具的工具栏中有个自动选择,选中后可自动
帮你识别鼠标所在的图层)
图层调板的下方FX后的第三个按钮,可以建组
复制已有图层:CTRL+J
按住CTRL键时,点图层所在的缩略图,可以调出图层的选区。
锁链工具可以绑定两个图层(在图层调板下方的第一个)
在图层调板的锁定后点锁定按钮,就不能动所在图层的空白区域
CTRL+加减符号(调整图像的大小)
解除小锁可以拖拽图层
上下叠加的图层(像素)在不同算法的结合下的变化(用不透明度旁边的正常的下拉菜单里。)
ctrl+t+shift可等比例调整图形的大小,确定用回车键
双击可以改图层名字
使图层上的图像位于同一水平面上:①CTRL+R调出标尺,建立横向参考线,把图像移到线上对齐
②将需要对齐的对象全部选中,在工具箱中找移动工具,在移动工
具的选项栏中按第三个按钮
删除参考线:点 视图-清除参考线
移动选项栏中倒数第二个按钮可使图像们均匀分布
2014年4月8日
图像合成:把对象移到背景上
第一种:在图层的最下面一排从左数第三个矩形点一下(图层蒙版)
然后点画笔,选好硬度,把背景上选成黑色(即遮住)
在不想要的地方涂抹
白色(即显示)把想要的地方显示出来
灰色是半透明
按ALT键点蒙版可以查看蒙版,也可以直接操作
按ALT键点第三个矩形可以出现纯黑色的蒙版,可以用白色画笔突显出来
第二种:在背景上选中想要的东西,然后点蒙版,最好用画笔修饰边缘
调整图层大小:CTRL+T(记得按SHIFT,按比例)
在图层上点右键点智能对象可以有对角线
在点完智能对象后双击右下角的智能图标,就可以把此图层调出来做东西,然后按存储(文件中),就
可以体现在之前的背景+图层上。
快速蒙版:(关于选区)
在工具箱的倒数第二层和图层蒙版一样的图标(Q退出进入)
用来创建选区的高级工具
在快速蒙版上的任意涂抹(粉色代表不选,白色代表选)
当选择很分散的东西即头发时,可以点选择-色彩范围用取色器取一下背景,把容差调一下,把对象保持
为黑色,然后点反向(右键),点Q键,进入快速蒙版模式,关掉RGB的眼睛,进入黑白状态,把图像调
完美(EG:把没选中的要选的地方檫成白色)就可以了。
2014年4月15日
渐变模糊:进入快速蒙版,用渐变工具,在需要模糊的地方拉一条线,然后退出蒙版,然后点滤镜。。
CTRL+SHIFT+V粘贴
CTRL+T缩小
CTRL+C复制
CTRL+A全选
艺术字:新建画布,点工具箱中的T的第三个,然后打字,然后在想要的背景图全选,复制,粘贴在
艺术字上。
FX只对图层有效果
2014年4月22日
同心圆:拉标尺-点园(在不规则图形旁边拉下来点圆和从中心)-画圆
BMW标签:画同心圆,然后把蓝色的一三象限选中把它变成白色(图像-色相/饱和度-色阶调到最大)
然后调效果。写BMW是之后的事情了
日历:先画一个圆角矩形,加效果,复制图层,选中副本的下半部分,按DEL删除。然后对上半部分
加效果,写数字(注意要T的第一个),OK。
安财考试吧PLUS 【330475306】
2014年5月6日
微信框最上面的不同是因为右下角的色相饱和度变化(必须要有选区)
上面平下弧线的选区(如微信框)要用选区的交集(最后一个)
CTRL+该图层缩略图可调去次图层选区
关于输出:把背景前面的眼睛关掉
点图像-裁切-确定
点图像-图像大小-改成需要的(如手机是120X120)
点文件-存储为WEB和设备所用格式(右侧点开未命名,选PNG-24)-点存储
关闭时选否,不然设计稿就改掉了~>_做手机页面:移动喜欢的图到空白模板上,变换大小
点出图层,画出一个黑色矩形,改变图层上的透明度,对黑色的矩形按CTRL+T,再点右
键(点透视,然后
拖拽右上角的拖柄,往上拖)可变成梯形
拉出信息,电话等图标,全选,组合(第三个,倒数第二个),拖拽到梯形上,合并图层
复制所合并的,点蒙版(第三个)点渐变。就可以啦~
2014年5月13日
ALT+点蒙版可看蒙版
CTRL+T可以改变图片大小,若再点右键可出现斜切,透视点
使文字立体:复制文字(CTRL+J)文字是矢量,扭曲,变形等对文字无效,要在副本上点右键,删格化
文字,就可以对文字副本扭曲变形等。
胶带齿痕:先用矩形选区选出一个矩形,在用多边形套索的选区减法做出齿痕。填充胶带颜色用渐变里
的油漆桶工具。
相片的白边是先调整画布大小(图像的画布)改为104X106(百分比),再拖拽过去
阴影是相片的投影,在效果上点右键,点倒数第三个创建图层,对投影的图层旋转,用橡皮擦檫去不需
要的部分。
PS:胶带图层一定要放在最上层,因为图层有层叠性。
做相框:
在老师给的相框中,删除背景,合并图层(相片)反正是最后四个,只留胶布两个图层。用选区选中相
片,按DELETE键删除,然后合并剩下的三个图层,变成相框。
2014年5月20日
剪贴蒙版:在画布上弄两个图层,按ALT键点图层1,2的接缝处(是图层调板上的接缝处)
对照片打孔:选两个照片,在照片上用圆形选区选出一个区域,对图层分布按DEL键即可
制作CD封面:调出标尺画一个圆,复制此圆。对原圆做效果。用上述打孔方法打孔。按ALT点图层的缩略
图可选出图层的选区,用选区的加法把打的孔加上,点选择-收缩,选择三个像素。点反向
选择,按DEL键。在点路径,画出路径。然后,然后我就不知道了
2014年5月27日
把一个图像移到另一个图像中,要考虑画布上对象的大小,调整比例(吸管工具中的标尺工具);注意
光影效果
2014年6月10日
一步到位:窗口-动作(点最下方倒数第二个创建动作,然后第二个变红记录动作,对图片做效果,点第
一个停止),想做相同效果时打开图片,点动作最下方第三个播放按钮即可。
安财考试吧PLUS 【330475306】
范文五:随堂笔记-LINUX
Android和ios
项目展示如下:
视频播放器
微博客户端:登录(默认、自定义)、主界面
手机安全卫士:主界面、黑白名单设置、电话拦截、短信拦截、流量监控、拦截策略、(管理后台程序、添加删除应用程序)
飞机游戏:主界面、游戏界面、排行榜、设置、多样性、关卡
面试必备知识:
数据库、网络
sudo apt-get install vim(在终端输入,装vim)
Linux: ctrl+空格 切换输入法 clear 清屏
1、 打开虚拟机
2、 vi hello.c
3、 :wq
4、 Gcc hello.c –o a
5、 ./a
练习:
1、用指针交换两个数
#include
void change(int*,int*);
int main()
{
int x,y;
printf("输入\n");
scanf("%d%d",&x,&y);
change(&x,&y);
printf("输出:%d%d\n",x,y);
return 0;
}
void change(int *a,int *b)
{
int temp=0;
temp=*a;
*a=*b;
*b=temp;
}
2、圆的面积
#include
#define PI 3.1415926
double circle(double);
int main()
{
double r=0;
printf("请输入圆的半径:\n");
scanf("%lf",&r);
printf("圆的面积为:%lf\n",circle(r));
return 0;
}
double circle(double r)
{
return PI*r*r;
}
Windows与linux不同,后者文件没有后缀名
Linux:类unix系统,树状结构
系统根目录:“/”
根目录下面的常规目录:
bin:常用命令(普通用户)
boot:系统启动资源目录
dev:设备目录
strerr:标准错误输出(显示器)
strin:标准输入(键盘)
strout:标准输出(显示器。正确的输出)
null:回收站
分区:
并口设备:hd_字母 _数字_
串口设备:sd_字母 _数字_
1、 主分区 1—4
2、 扩展分区 :
逻辑分区:5—
注意:1、如一个系统分了4个主分区,则不能再分配扩展分区。2、
如果要分配超过5个分区,必须要分配扩展分区
etc:软件或者系统配置目录
home:普通用户的环境目录,相当于windows下的每个账户对应的信
息
lib:linux的核心目录以及c函数库实现
文件系统:对数据的存取管理
sbin:超级管理员使用的命令
usr:
include:所有的c语言头文件目录
share:安装程序目录
var:服务器存放文件位置
root:对应root账户根目录(超级管理员,具有所有权限) media/mnt:临时目录
linux系统包含:
1、 Linux内核
2、 运行期库及系统程序:应用软件开发
3、 Shell:普通用户操作界面
4、 实用工具程序:应用软件
支持的文件系统:
ext3
用户根目录:每个用户都有一个用户环境目录,普通用户在home目录下,以用
户名创建的目录(命令pwd,查看当前工作目录)
路径:
1、 绝对路径:总是从根目录(/)开始去访问资源的路径
2、 相对路径:总是从自己开始访问资源
. 代表当前目录
..代表父目录
命令分类: (按q退出)
1、 内部命令:cd、pwd等
2、 外部命令:不是shell的本身包含部分
命令的使用方式:命令名 【选项】 【参数列表】
cd:切换用户工作目录
使用方法: cd 【路径】
常用的特殊形式:
cd ~ 切换到用户根目录
cd - 切换到之前的工作目录
cd 切换到用户根目录
cd ..切换到当前工作目录的父目录
输入命令的时候,如果一行没有输完,输入“\”按回车,在下一行继续输入 命令补全功能:如忘记命令全名,只记得首字母,可以双击TAB键,命令会自动显示或补齐。
clear:清屏命令 或ctr+l
man命令:查看所有的外部命令的使用方式
使用方式:man 【选项】 命令名
选项:1:shell命令
2:系统API查看
3:c函数介绍
ls:列出指定目录下的信息
语法:ls 【选项】【参数】
-a:列出所有内容(隐藏文件:文件名以“.”开始的文件) -l:列出详细信息
-d:列出该目录本身的信息
参数一起用可以一起写或分开,如 ls –al 或 ls –a –l
查看:cat :【选项】 【参数】:查看指定文本文件的内容
-n 加上行号
less:【选项】 【参数】:分屏查看
-N 加上行号
od:格式化查看二进制文件
od 【option】 【file】
-c:ASCll字符查看
-x:十六进制查看
-o:八进制查看
添加:
touch:【option】 file
修改文件file的时间(最近访问时间和最近修改时间)为当前系统
时间,如果文件不存在,创建一个空文件。
1、 访问时间
2、 修改时间
3、 状态修改时间
mkdir: 【option】 file
-p:递归创建文件夹(文件必须不存在)
修改和删除:
mv: mv 【OPTION】... SOURCE... DEST(似剪切粘贴)
1、 修改文件source名字为dest
2、 把文件source移动到dest下面
cp:【OPTION】... SOURCE... DEST(似复制粘贴)
-r:复制目录
-a:完全复制
rm: 【option】 file 删除文件或文件夹
-r:删除目录
-i:删除之前给出提示,判断是否删除
-f:不会报错(与-i互斥,不能一起用)
rmdir 【option】 file :删除空的文件夹
-p:递归删除文件夹
查找:
find: 【起始位置路径】【选项】【描述】在指定目录下进行文件名索 -name:名字匹配
grep : grep 【选项】格式 【起始位置路径】在文件中查找匹配的内容 -i:忽略大小写
-n:行号
如grep -in for /home/beicai/hello
普通文件(文本文件或二进制文件)
d 目录
l 符号链接文件
c 字符型设备文件(键盘)
b 块设备文件(硬盘)
p 管道文件(进程间通信)
s 套接字文件(网络通信)
权限:三组(三个为一组 )
1、 文件所有者权限
2、 文件所属组权限
3、 其他用户权限
r:可读(4)w:可写(2)x:可执行(1)-:没有权限(0)
chmod修改文件权限命令: chmod [OPTION]... MODE[,MODE]... FILE...
1、 位的修改
2、 整体修改
U:文件所有者
g:文件所属组
o:其他用户
a:所有用户
+:增加权限
-:删除权限
如 chmod u+x test对所有者增加可执行的权限,也可用二进制修改。
如chmod 777 test 对所有的用户都有可读可写可执行权限
chown修改文件所有者或所有组 :chown [OPTION]... [OWNER][:[GROUP]] FILE... sudo chown root:root:test
chgrp 修改文件所有组 [OPTION]... [GROUP]] FILE...
r:普通文件:可以使用命令查看内容
文件夹:可以使用命令列出文件夹信息(ls)
W:普通文件:可以修改文件内容(vi)
文件夹:可以删除或添加文件夹里的内容,即使当前文件没有权限 X:普通文件:可以运行
文件夹:可以切换进入那个文件(cd)
su 切换用户 sudo su==su –l root -l 账户名
mount 挂载 mount -t 挂载类型 device 挂载位置
把其他设备挂载到指定位置(目录)
umount 取消挂载
tar 打包压缩
tar -cjvf 压缩包名 待压缩的文件列表
tar -czvf 压缩包名 待压缩的文件列表
例如: tar -cjvf first.tar.gz2 /home/bencai/桌面
tar -czvf second .tar.bz /home/bencai/桌面
解压缩(与上面压缩算法对应解压)
tar -xjvf 压缩包名 –c 解压到的位置
tar -xzvf 压缩包名 –c 解压到的位置
例如: tar -xjvf first.tar.gz2 -c ./first
tar -xzvf second .tar.bz -c ./second
ps 查看进程
-aux 列出当前所有进程的详细情况
pstree 以树状方式查看所有进程 所有进程都是以现有进程进行创建
-p 打印出进程号
kill 给指定进程发送信号
kill 信号 进程号
kill –l 列出所有信号(64个 前32个为不可靠信号,后32个为可靠信号) kill -9 1669 -9是杀死一个进程
vi 命令方式的文本编辑器
进入方式:1、vi + enter(没有指定文件名)
2、vi 文件名+enter(指定文件名,如文件存在,则打开,不存
在,则创建)
vi 模式:1、命令模式 ->编辑模式(a,i,o,s)
->末行模式(:,/,?)
2、编辑模式 ->命令模式(ESC)
3、末行模式 ->命令模式(ESC)
退出方式:(末行模式)1、 :q(直接退出,不保存)
2、 :q!(强制退出)
3、 :wq(保存退出,已指定文件名) 保存方式:(末行模式)1、 :w 文件名(保存到指定文件)
2、 :w(保存到现有文件)
3、 :wq(保存到现有文件并且退出) 命令模式:1、删除一个字符 delete
2、撤销操作:u键
3、删除n行:ndd
4、粘贴 p键 (先删除,才能用粘贴)
5、复制n行 nyy
查找(末行模式):1、/内容 n(下一个)N(上一个)
2、?内容 n(上一个)N(下一个)
替换(末行模式)1、 :起始行号,结束行号 s /原内容/新内容/g(全部) 特殊字符转义: \ 字符
如:1,6 s/a/dddddd/g 从第一行到第六行($代表最后一行),
把a替换为ddddd
行号:1、临时行号(末行模式 : set nu) 取消:set nonu
设置永久行号: vi ~/.vimrc 中输入 set nu 退出保存。 移动到要查找的行: :行号
使用shell命令:末行模式 :!shell命令
多个文本:
进入下个文本:next
进入上个文本:prev
Crtl+c 终止进程
Crtl+d 暂停进程
Crtl+z 进程休眠
shell:命令解析器
包含的功能:
1、 作业控制
2、 别名功能 alias:别名=“命令”
如: alias:ll=“ls -l”
去除别名 unalias 别名
3、 命令历史 history !+命令编号 使用以前的命令 !!重复使用上一个命令
4、 命令行编辑功能
5、 功能键自定义功能
6、 变量类型、命令与控制结构
标准输出(stdout): 1
标准输入(stdin): 0
标准输错误出(stderr): 2
重定向:把输入或输出的源,不再以默认方式处理,而是使用重定向运算符修改为其他的源
重定向运算符:1、输出重定向 >
2、追加方式的输出重定向 >>
3、输入重定向
4、追加方式的输入重定向
管道:进程间通信的方式
管道运算符:|
功能:使用“|”运算符,在进程间进行数据传递
注意:1、下一个进程总是把上一个进程的标准输出作为它的标准输入
2、如上一个进程堵塞,则下一个进程永远不会运行
变量:1、本地变量(只在当前shell环境中有效果 类似于局部变量,可以使用export把它设置为环境变量)
2 、环境变量(从它声明到所有的子进程都能使用的变量)export 变
量名=值 取消变量 unset 变量名
HOME =/home/bencai 保存用户根目录
HISTSIZE 历史记录存储数量最大值
HISTFILE历史记录文件位置
PATH命令搜索路径集合
PS1命令提示符前面的内容
PS2命令未输完提示符
预定义变量:
$# 传递到脚本的参数数量
$* 传递到脚本的所有参数内容
$? 命令执行后返回的状态
$$ 查看当前进程的进程号
$! 后台运行的最后一个进程号
$0 当前执行的进程号
3、 位置参数变量
$1--$9
声明数字型变量方式:
declare –i 变量名=值
取变量值方式: $变量名
echo 回显
使用方式:echo 内容
Shell脚本:命令的集合,以便于方便完成管理工作
步骤:1、编辑脚本文件
2、修改权限(可执行)
3、 运行
引号区别:
无 原样
‘ ‘ 字符串
“ ” 原样
` `(esc下面的键)调用shell命令
条件结构:
if
1、 单分支
if 【条件】 ; then
fi
2、 双分支
if 【条件】 ; then
//条件体
else
//非条件体
fi
3、 多分支
if 【条件】 ; then
//条件体1
elif 【条件】 ; then
//条件体2
elif 【条件】 ; then
//条件体3
elif 【条件】 ; then
//条件体4
else
//非条件体
fi
#!/bin/bash
echo '目录:'
read score
if [ $score -ge 90 ] && [ $score -le 100 ] ; then
8 echo 'A'
9 elif [ $score -ge 80 ] ;then
10 echo 'B'
11
12 elif [ $score -ge 70 ] ;then
13 echo 'C'
14
15 elif [ $score -ge 60 ] ;then
16 echo 'D'
17 else
18 echo '不及格
case 值 in
模式1)
操作1;;
模式2)
操作2;;
模式3)
操作3;;
*)
操作4;;
esac
#!/bin/bash
echo '目录:'
read sex
case $sex in
8 'm' | 'M' )
9 echo '男人'
10 ;;
11
12 'f' | 'F' )
13 echo '女人'
14 ;;
15 *)
16 echo '人'
17 ;;
循环:
1、 for 变量名 in 列表
do 命令
done
#!/bin/bash
echo '目录:'
read dir
for var in `ls -l $dir`
do
echo $var
done
2、until 【条件】//条件为假才会执行
do 命令
done
until
3 、while 【条件】
do 命令
done
函数:
函数名()
{
命令
}
gcc 编译流程:
1、 预处理(-E,文件后缀名 .i) 头文件包含进来,宏展开,去除注释
2、 编译 (-S,文件后缀名 .s)把C程序代码编译为 汇编代码(语法检查)
3、 汇编(-c 文件后缀名 .o)把汇编代码汇编成二进制代码
4、 链接( 文件后缀名 .elf)链接到函数库,使之成为可执行程序(动,静态链接) 链接分类:
静态链接:在链接时把函数实现直接包含进来,使得成为一个整体 动态链接:在链接时只是使用指针指向函数的实现
语法:gcc 源文件名 –o 可执行文件名
如没有-o 默认生成程序名为a.out
elf ---可执行文件的后缀名
常用开关:
-Wall:严格方式检查c代码
-std=c99:c99模式编译代码
-o: 指定程序名
-s:指定为动态链接
Gdb:代码级调试工具 一定要在编译的时候加上 –g
语法:gdb 程序名 退出: q + enter
在gdb中输入enter是重复上一个命令
常用命令:
l:列出文件的内容,每次十行
b: 加断点 b 文件名:行号
b 函数名:给函数加断点
info b :列出所有断点 或(i b)
delete 断点号:删除断点
r:运行
运行过程中: p: 打印出用户指定内容的值 例如: p a 打印出变量 a的值 p &a 打印出变量a的地址 i locals 打印出所有变量的值 n:单步运行(执行到下一行停止) c:继续执行直到下一个节点或输入停止
watch:在程序运行过程中,如果watch监控的变量值被改变,将会
停止 语法:watch 变量名
s:运行过程中,进去函数内部
finish:结束函数
makefile:项目生成管理工具
文件名:makefile Makefile
语法:目标文件:依赖文件列表
shell 命令1
shell 命令2
。。。。。。。
make命令来解析makefile文件
make命令语法:make –f makefile文件路径
注意:1、如果当前目录下有makefile或Makefile,可以省去“–f makefile
文件路径”
2、如果当前目录下没有makefile或Makefile,必须要有“–f
makefile文件路径
核心思想:通过比较目标文件与依赖文件之间的修改时间,以此来
判断是否需要执行shell命令
1、 目标文件不存在,会执行shell命令
2、 如果目标文件的修改时间比依赖文件的任意一个的修改
时间要早,也会执行shell命令
最终目标:makefile文件里面,第一个目标,就是最终目标,所有的生成都是围绕最终目标(如果shell命令上面的目标与最终目标没关系,永远也不会执行)
变量的声明: 变量名:=值
变量名+=值 值
取变量值: $(变量名)
自定义变量:
$@ 当前目标文件
$? 已修改的依赖文件列表
$
$^ 依赖文件列表中的所有文件
隐式规则:所有的.o文件都可以自动由名字一样的.c文件生长 虚目标:没有依赖文件的目标
调用方式:make –f makefile文件 虚目标名
转载请注明出处范文大全网 » 三年级语文教学随堂笔记