2020-02-05 09:29发布
adcr 发表于 2012-5-4 13:08 拿现在我们所用的ASDFG方式的电脑键盘来说 当年就是为了避免把机械式英文打字机打坏了才搞得这么一套标准, ...
huayuliang 发表于 2012-5-4 15:33 汗。。。 那个排列恰恰就是为了打字能快些才那样排列的。
最多设置5个标签!
坐电脑前说话就可以了,不用打字。
歪一下楼:请搜一下Dvorak, Colemak等关键字
这是另外的一些键盘布局
Dvorak布局windows有内置支持,可以体验一下
不是为了快,而是为了减慢速度。
打字机当初发明的时候,键盘是按ABCD顺序排的
结果连续敲击相邻键时经常卡住,所以就把按键位置打散
在几种说法中我觉得比较靠谱的是
为了“在不搞坏打字机的前提下”尽量提高打字速度
**************************************************************************
电子琴程序
//注意,这个程序运行后没有界面,播放一遍音乐之后自动结束
ici cpu = ici cputype pc80x86 ici Wind 开始,
//加载windows内核类
import syslib.windows.kernel32,
//加载MIDI接口类
import syslib.windows_pack.midi,
link vdata code {} = ici Cloud code,
//=======================================
public void 开始()
{
//打开MIDI设备并设置当前音 {MOD}为 "风铃" 10为风铃
midi open[],
midi set_timbre[ 0, 10 ],
//用当前音 {MOD}播放一遍曲子,曲子一共有64个音符
反复执行 初始 i(N8) = 0,每次 i + 1,直到 i == 65,
//解码器
节拍(N16) = 乐曲 i >> 4,
节拍 * 200,
音阶(N8) = 62 + 音符表(乐曲 i & 0x0f),
//播放器
midi play[ 0, 音阶, 90 ],
kernel32 Sleep[ 节拍 ],
midi stop[ 0, 音阶 ],
...
//播放完成,退出程序
kernel32 ExitProcess[ 0 ],
}
//各个音的频率, 3-4 和 7-1 之间差一个半音,其他的相差一个全音
音符表([code N8*?]) =
[
// 1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 4, 5, 6, 7
0, 2, 4, 5, 7, 9,11, 12,14,16,17,19,21,23, 24,26,28,29,31,33,35
],
//《敖包相会》的曲子,每个字节的高位表示时值;低位表示音阶,0~f依次对应 67-1234567-1234567
乐曲([code N8*?]) =
[
0x20,0x48,0x2a,0x2a,0x18,0x17,0x45,0x25,0x47,0x28,0x37,0x18,0x4a,0x88,
0x20,0x48,0x2a,0x2a,0x18,0x17,0x45,0x25,0x47,0x28,0x27,0x28,0x2a,0x18,0x17,0x85,
0x25,0x17,0x28,0x2a,0x25,0x24,0x23,0x20,0x44,0x24,0x23,0x34,0x15,0x28,0x27,0x85,
0x25,0x17,0x28,0x18,0x1a,0x25,0x24,0x23,0x20,0x34,0x17,0x25,0x25,0x23,0x13,0x10,0x24,0x23,0x80
],
******************************************************************
这是AVR流水灯的测试程序
ACI cpu = ACI cputype mega8 ACI Wind 启动,
导入 组件库 avr mega8 chip,
link 组件 芯片 {} = chip,
public void 启动()
{
芯片 DDRB = 0xff,
芯片 DDRD = 0xff,
反复执行
芯片 PORTB = 0xff,
芯片 PORTD = 0xff,
反复执行 8 次,
芯片 PORTB >> 1,
延时100MS[],
...
反复执行 8 次,
芯片 PORTD >> 1,
延时100MS[],
...
...
}
void 延时100MS()
{
反复执行 100 次,
反复执行 100 次,
...
...
}
********************************************************************
这是一个秒表程序
ACI cpu = ACI cputype mega16 ACI Wind 引擎 启动,
导入 组件库 avr mega16 chip,
引擎 显示屏 = 显示屏,
引擎 键盘 = 键盘,
键盘 芯片 = chip,
显示屏 芯片 = chip,
//==========================================
组件 引擎
{
public link 组件 显示屏 {}
public link 组件 键盘 {}
public void 启动()
{
键盘 初始化[],
显示屏 初始化[],
显示屏 清零[],
开始键之前状态(N1) = 1,
复位键之前状态(N1) = 1,
暂停(T) = true,
反复执行
//判断是否刚刚按下清零键
如果 键盘 复位键 == 0 && 复位键之前状态 == 1,
显示屏 清零[],
暂停 = true.
//判断是否刚刚按下开始/暂停键
如果 键盘 开始键 == 0 && 开始键之前状态 == 1, !暂停.
开始键之前状态 = 键盘 开始键,
复位键之前状态 = 键盘 复位键,
如果 !暂停, 显示屏 时间累加[].
显示屏 显示[],
...
}
}
//==========================================
组件 键盘
{
public link 组件 芯片 {}
public void 初始化()
{
开始键_DDR = 0,
复位键_DDR = 0,
}
public link 开始键(N1) = 芯片 PIND 7,
public link 开始键_DDR(N1) = 芯片 DDRD 7,
public link 复位键(N1) = 芯片 PIND 6,
public link 复位键_DDR(N1) = 芯片 DDRD 6,
}
//==========================================
组件 显示屏
{
public link 组件 芯片 {}
link 虚拟类型 code {} = ACI Cloud code,
public void 初始化()
{
port_dir = 0xff,
select_dir = 0xff,
}
public void 清零()
{
data0 = 0,
data1 = 0,
data2 = 0,
data3 = 0,
}
//改变显示数据,加1,满10进1
public void 时间累加()
{
data0 + 1,
如果 data0 != 10, 返回.
data0 = 0,
data1 + 1,
如果 data1 != 10, 返回.
data1 = 0,
data2 + 1,
如果 data2 != 10, 返回.
data2 = 0,
data3 + 1,
如果 data3 != 10, 返回.
data3 = 0,
}
public void 显示()
{
//显示小数位的数据
select = 0b0000_0000,
port = seg data0,
select = 0b0000_1000,
延时5ms[],
//显示个位数据,并消隐十位和百位的零
select = 0b0000_0000,
port = seg data1 & 0b0111_1111,
select = 0b0000_0100,
延时5ms[],
如果 data2 == 0 && data3 == 0,
延时5ms[],
延时5ms[],
select = 0b0000_0000,
返回.
//显示十位数据,并消隐百位的零
select = 0b0000_0000,
port = seg data2,
select = 0b0000_0010,
延时5ms[],
如果 data3 == 0,
延时5ms[],
select = 0b0000_0000,
返回.
//显示百位数据
select = 0b0000_0000,
port = seg data3,
select = 0b0000_0001,
延时5ms[],
select = 0b0000_0000,
}
void 延时5ms()
{
反复执行 10 次,
反复执行 100 次,
...
...
}
//全局变量定义
data0(N8),
data1(N8),
data2(N8),
data3(N8),
//数码管字形表
seg([code N8*10]) =
[
0b1100_0000, 0b1111_1001, 0b1010_0100, 0b1011_0000, 0b1001_1001,//0,1,2,3,4
0b1001_0010, 0b1000_0010, 0b1111_1000, 0b1000_0000, 0b1001_0000 //5,6,7,8,9
],
//数据端口
link port(N8) = 芯片 PORTA,
link port_dir(N8) = 芯片 DDRA,
link select(N8) = 芯片 PORTB,
link select_dir(N8) = 芯片 DDRB,
}
一周热门 更多>