电子
quanguoheme
这个作者很懒,什么都没留下…
展开
-
16位机和32位机器的另一中差异,-取模运算,
方法Gint I,J;I = 257 /8;J = 456 % 32; 方法H int I,J;I = 257 >>3;J = 456 - (456 >> 4 为CPU的不同而产生的问题。比如说,在PC上用这招编写的程序,并在PC上调试通过,在移植到一个16位机平台上的时候,可能原创 2012-02-03 11:29:38 · 1011 阅读 · 0 评论 -
漏极开路输出 和4×4键盘
漏极开路输出 输出1就是输出低电平,输出0就是高阻,所以要加上上拉电阻,下面的键盘链接中,p2.0到p2.3为漏极开路输出且加了上拉电阻。大意就是一列一列的扫描。比较消耗cpu资源,先设第一列为低其他为高,那么如果第一列有按下则第一列的按键一定有一个为低电平否则为高INT8U KeyScan( void ){ INT8U i, j, val = 0; INT8U k原创 2013-04-24 17:52:48 · 963 阅读 · 0 评论 -
%和&运算的共同点。
#define SECTOR_PER_BLOCK 256volatile unsigned int dwSector; 用来判断是否常熟SECTOR_PER_BLOCK 的整数倍时: 如果是用求模就是这样if(dwSector % SECTOR_PER_BLOCK ==0) 如果是用&那么就是这样if(dwSector &(SECTOR_PER_BLOCK -原创 2011-12-29 11:10:00 · 1219 阅读 · 0 评论 -
浪费了我2天时间终于搞定led驱动bug
在128位宽的led屏上解决了数组2和3不显示的bug原先的陈旭总是不能显示数组2,和3, 但是又可以清屏,填满正个屏幕。并且我佘子数组3最后一个字节127为0xff时,整个数组2和3对应的区域又全亮了。后来发现原理是这样的:以前的代码我每一行是扫描128×2个位,理应是每一行扫描128个位到led屏幕 void GUI_Refresh(void){ INT8U temp_page;原创 2013-01-23 17:08:43 · 670 阅读 · 0 评论 -
2440中并口的3个作用
1:调试程序, 直接把程序下载到ram, 需要中间转接头, mini-jtag小板, 通过,要接8跟跳线,如图: 2:烧录程序, 直接把程序烧录到nandflash,程序要小于1块 需要,中间转接头,Multi-jtag小板,如图:3:串口转换, 通过一个赛令思芯片,控制串口方向 可以直接通过usb,不要并口, 也可以,通过并口,在加上中间转接头,原创 2012-02-02 12:20:40 · 757 阅读 · 0 评论 -
lpc1768 时钟与定时器
时钟包含4部分1:CLKSRC :实例中为01 如下选择PLL0的时钟源: 00 选择内部RC振荡器作为PLL0时钟源(默认) 01 选择主振荡器作为PLL0时钟源 10 选择RTC振荡器作为PLL0时钟源 11 保留,不使用该值2:PLL0配置寄存器(PLL0CFG – 0x400F C084)FCCO =(2×M×FIN)/ N原创 2013-01-17 16:21:10 · 3881 阅读 · 2 评论 -
串口通信的经验,422,485,232, ttl/cmos
串口通信间隙.的\如果是9600的波特率 没发送一个位就要104.16us. 一个字节如果要10位, 那么 就是1040us. 15个字节就要15.625ms 232和rs422的相同点和不同点: 相同点:都是全双工的 不同点: 232只要3跟先即可.RXD,TXD,GND, 但是RS422只要4根线即可.T+,T-,R+,R-, RS422采用的是差分原创 2012-08-24 10:50:38 · 2254 阅读 · 0 评论 -
house -home 项目 总结
1:关于 pwm 输出的T0管脚作为输出只能是漏极开路 , 如果你设置为推挽模式, 实际上他还是 漏记开路模式,当T0作为PWM输出的时候 , 引脚必须拉高, 如果设置为0 , 那么端口就是高阻状态,PWM输出就没有反应 2: 对于交流控制的蜂鸣器,如果频率小于1KHZ ,声音就会很小, 3:INT16U freq=0x0102;INT原创 2012-06-13 10:24:54 · 468 阅读 · 0 评论 -
arm9-ucos中断过程分析
步骤1:发生中断后,跳到地址0的中断向量表;b HandlerIRQ ;handler for IRQ interrupt步骤2:然后跳到,中断函数HandlerIRQ ,这个函数就做了并且只是了一件事取出全局变量HandleIRQ 地址上的函数并且使pc跳到该函数, //堆栈是满降方式就是说 ,sp指向满的地方,当压栈时,先sp自减4然后存数据到sp所指地址,这里仅仅是取出数据到pc没原创 2012-02-07 11:12:09 · 1349 阅读 · 0 评论 -
arm9-裸机中断过程分析(2012-02-07 11:12)
步骤1:发生中断后,跳到地址0的中断向量表;b HandlerIRQ ;handler for IRQ interrupt步骤2:然后跳到,中断函数HandlerIRQ ,这个函数就做了并且只是了一件事取出全局变量HandleIRQ 地址上的函数并且使pc跳到该函数, //堆栈是满降方式就是说 ,sp指向满的地方,当压栈时,先sp自减4然后存数据到sp所指地址,这里仅仅是取出数据到pc没原创 2012-05-18 16:21:46 · 819 阅读 · 0 评论 -
c语言的表达式优先级中左结合 含义
if((!pSectorBuff && !pSectorInfoBuff) || dwNumSectors != 1) { RETAILMSG(1, (TEXT("Invalid parameters!\n"))); return FALSE; }如上 :显示&&进行运算, 得到一个值, 然后这个值进行||运算11级优先级(左结合) &&逻原创 2012-03-08 17:03:37 · 1643 阅读 · 0 评论 -
关于int类型的数据的几个问题
1 :INT_MAX 的最大值位多少2:int和unsigned int 相加,是一个什么类型的数据特别注意if((int_data)-(uint_data)) 语句 #define INT_MAX ((int)(~0U>>1))#define INT_MIN (-INT_MAX - 1)#define UINT_MAX (~0U)#define LONG_MAX (原创 2012-02-11 09:39:37 · 826 阅读 · 0 评论 -
很偏僻的运行错误,编译成功,运行失败,原因:语句太长
如下语句, 执行到这里会进入死循环。 WRITE_REGISTER_ULONG(rNFMECCD0, (DWORD)((DWORD)(eccBuf[1]换成如下语句就没问题: rNFMECCD0=(DWORD)((DWORD)(eccBuf[1] 其中宏如下:#define WRITE_REGISTER_ULONG(p, v) (*(unsigned long *)(p))原创 2012-02-04 12:07:29 · 691 阅读 · 0 评论 -
字节对齐问题的另一种表现--使用汇编
// BUGBUG, because Media Player for Pocket PC sometimes pass us un-aligned buffer // we have to waste cycle here to work around this problem if( ((DWORD) pSectorBuff) & 0x3) { RETAILMSG(1, (T原创 2012-02-02 16:06:15 · 873 阅读 · 0 评论 -
三极管NPN PNP
在pnp三极管中,就是2440输出0时, p比n高的时候,三极管导通。 如果2440输出1,n比p高的时候,三极管阻塞。在npn三极管,2440输出0,三极管阻塞。 2440输出1,三极管导通。上拉电阻和下拉电阻就是用于给悬空的引脚一个确定的状态。原创 2013-12-26 21:02:32 · 1125 阅读 · 0 评论