![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
单片机技术
文章平均质量分 72
goodluckyxl
这个作者很懒,什么都没留下…
展开
-
P89C669使用资料-FLASH使用
七 FLASH 存储器的一般描述P89C669的FLASH具有可擦除可编程的功能,FLASH可按字节进行读写,芯片的擦除操作将删除所有的内容,块擦除可以就内存的字节块进行擦除操作。系统内编程和并行编程都是有效的。片内擦写时序为用户提供于友好的接口。P89C669支持10000次有效的擦写。存储单元采用了优化的擦写和编程技术,利用更先进的通道氧化处理技术和低电压擦写操作提供可靠的多次擦写处理。P原创 2005-01-20 18:52:00 · 2946 阅读 · 1 评论 -
ARM中断处理及状态机嵌套实现
1.ARM7提供两种级别的中断, FIQ(Fast Interrupt Request快中断) 一般中断低速反应中断IRQ。 所有的中断请求一旦产生则中断反应会经过三个步骤 a.输入阶段这个逻辑可以根据中断源被实现,需要0-2个时钟周期 b.EIC自身处理 2个时钟周期 c.ARM7的逻辑处理2.EIC Enhanced Interrupt Controller增强型中断控制器 EIC硬原创 2005-10-19 14:47:00 · 4574 阅读 · 0 评论 -
小结UART驱动过程
URAT工作流程:1.配置发送和接收口线信息来实现访问方式 具体使用IO的端口及读写方式即配置GPIOx的PC0 PC1 PC2寄存器2.开启UART_CR中的RUN位打开波特率发生器使UART激活3.配置队列机制这个机制是接收和发送公用的配置 选择关闭队列机制即不使用FIFO中的其他15个数据矢能 选择开启队列机制则使用16个数据矢能在移位前可以存储16字节发送或接收数据 操作置或原创 2005-11-05 08:57:00 · 3921 阅读 · 1 评论 -
at&a语法和intel语法
学习linux内核少不了要读at&t的汇编,这个对大多数使用intel汇编的人是一个不幸的消息,要另起炉灶。什么?你不是学得intel汇编?你是不是中国学生?记得我们有门课是学,学得挺感兴趣,窃以为这个就是学电脑的最高境界。当时怎么也没人说这个是intel汇编语言格式,还有个什么at&t格式..不扯远了,这两者之间还是有章可循的,我觉得要注意的是转移指令,这个要仔细琢磨一下才看的明白。内存间接转载 2006-05-16 10:45:00 · 2763 阅读 · 0 评论 -
linux初始化代码陷阱门初始化
linux初始化代码陷阱门初始化:trap_init主要功能对异常陷阱程序做初始化,其实就是设置中断描述符表(IDT:interrupt Description Table)。IDT和GDT差不多每个IDT都是由一个8个字节组成。最多0.11内核中支持256个描述符,对于第n个描述符获取地址大概可以这样计算 add(n) = add(IDT)+8*(n-1)得到。 一:IDT中存放原创 2006-05-30 15:45:00 · 2012 阅读 · 1 评论 -
linux0.11缓冲处理过程及一点块设备的基础知识
关于linux缓冲处理过程及一点块设备的基础知识 一: 块设备硬盘的基础知识:硬盘存储信息的格式是按柱面、磁头号和扇区来存储的,硬磁盘每个存储表面被划分成若干个磁道,每道划分成若干个扇区。存储容量=磁头数×柱面数×扇区数×每扇区字节数磁头数: 磁头是硬盘读取数据的关键部件,,在工作状态时,磁头悬浮在盘片上方,而不与盘片直接接触,电源关闭之后,磁头会自动回到在盘片上的起始位置原创 2006-06-01 17:42:00 · 1422 阅读 · 0 评论 -
关于段及相关概念的一些自己的阐述
1.void sched_init(void){...00392 set_tss_desc(gdt+FIRST_TSS_ENTRY,&(init_task.task.tss));00393 set_ldt_desc(gdt+FIRST_LDT_ENTRY,&(init_task.task.ldt));...}gdt:全局描述符,一共定义256个描述符,GDT本身不是原创 2006-06-09 12:07:00 · 1753 阅读 · 0 评论 -
des加密算法程序收藏可用
只要建立d3des.h 和 d3des.c分别拷贝下面的文件体就ok了#define D2_DES /* include double-length support */#define D3_DES /* include triple-length support */#ifdef D3_DES#ifndef D2_DES#define D2_DES /* D2_DES is n转载 2006-07-17 09:39:00 · 5230 阅读 · 3 评论 -
C语言宏定义技巧
1,防止一个头文件被重复包含#ifndef COMDEF_H #define COMDEF_H //头文件内容 #endif 2,重新定义一些类型,防止由于各种平台和编译器的不同,原创 2006-08-11 15:49:00 · 2209 阅读 · 9 评论 -
ARP原理3-8学习
∮讨饭的(***) 10:46:16我在准备笔试呢,哈哈。 dogy(***) 11:02:58没事 正好加固你的安全知识 dogy(***) 11:03:22arp在什么情况下进行? 刀(***) 10:46:57 ∮讨饭的(***) 10:47:06我现在需要了解跨站脚本和java安全性的知识。 dogy(***) 11:03:37每次通讯都要原创 2007-03-08 11:33:00 · 2701 阅读 · 0 评论 -
[ioctrl] 一些解释
SIOCGIFCONF请求为每个已配置的接口返回其名字以及一个套接口地址结构。我们接着可以发出多个接口类其他请求以设置或获取每个接口的其他特征。这些请求的获取(get)版本(SIOCGxxx)通常由netstat程序发出,设置(set)版本(SIGOCSxxx)通常由ifconfig程序发出。任何用户都可以获取接口信息,设置接口信息却要求有超级用户权限。 这些请求汲取或返回一个一个转载 2007-08-09 18:29:00 · 4194 阅读 · 1 评论 -
[ioctrl] 函数介绍
ioctl函数 本函数影响由fd参数引用的一个打开的文件。 #includeint ioctl( int fd, int request, .../* void *arg */ );返回0:成功 -1:出错 第三个参数总是一个指针,但指针的类型依赖于request参数。我们可以把和网络相关的请求划分为6类:套接口操作文件操作接口操转载 2007-08-09 18:27:00 · 5970 阅读 · 1 评论 -
txt-scrolled demo
gboolean GtkTreeModelForeachFunction(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data);/* * func: do initialization with scroll struct * * Input: scrolled_str: strin原创 2007-09-13 15:58:00 · 2456 阅读 · 0 评论 -
UART寄存器介绍
UARTn_BR: UART波特率寄存器UARTn_BR[15:0]: 由定时器的装入寄存器定时装入相应内容。 UARTn_CR.Run=0可以装入直到UARTn_CR.Run=1才写入无效 UARTn_TxBUFR:UART传输寄存器UARTn_TxBUFR[8]: 传输数据第八位或者奇偶校验位或者唤醒位或者未定义的位有相应操作模式决定原创 2005-10-11 11:44:00 · 5420 阅读 · 0 评论 -
ARM下的对齐处理
from DUI0067D_ADS1_2_CompLib 3.13 type qulifiers 有部分摘自ARM编译器文档对齐部分对齐的使用:1.__align(num) 这个用于修改最高级别对象的字节边界。在汇编中使用LDRD或者STRD时 就要用到此命令__align(8)进行修饰限制。来保证数据对象是相应对齐。 这个修饰对象的命令最大是8个字节限制,可以让2字节的对象进行4字原创 2005-10-17 16:45:00 · 14110 阅读 · 1 评论 -
51宏使用栈保护防止PC误跳和消除跳转限制
初涉及单片机编程发现几个具有实际意义的问题1.如果在程序过程中企图使用堆栈SP来保护一些变量传入下面调用的函数,即在函数中使用sp,注意下面在函数调用时下个PC会被压入SP,SP+=2,然后如果你在函数中继续按照原来的想法认为顺序POP得到保护的数据的话,会产生问题,先进后出,弹的是pc内容,当然在最后函数RET时POP出PC的值同样变成你最先压入的2个字节内容,会误跳。解决1: 先POP 出PC原创 2005-01-22 16:54:00 · 1470 阅读 · 0 评论 -
第2章 存储组织【2】
2.3 特殊功能寄存器特殊功能寄存器为处理器提供了一种访问内部控制寄存器,外围设备和I/O端口的方式。一个特殊功能寄存器地址总是被全部包含在一个指令内。标准的特殊功能寄存器空间是128字节大。为了提供对外围设备的控制或者访问CPU特性和功能,特殊功能寄存器在每一个51MX设备中,按照需要被实现。未定义的特殊功能寄存器被当作保留,而且不应该被用户程序访问。在特殊功能寄存器空间的16个地址都是可字节和原创 2005-03-24 16:28:00 · 1852 阅读 · 0 评论 -
第6章 .P89C669的端口,电源控制和外围设备[6-9]
6.6 UART0P87C51MX2有两个增强型串口,并且有一个独立的波特率发生器,他们是和8X51R+系列的串口保持兼容除了这个波特率发生器之外,第一个串口(UART0)可以选择TIMER1 溢出或者TIMER2溢出 或者一个独立的波特率发生器,串口1 (UART1)选择波特率发生器来产生波特率,除了作为波特率发生器,比标准80C51多了包括结构错误检测,自动识别地址,可选择双缓存和一些中断选择原创 2005-03-24 16:36:00 · 2744 阅读 · 0 评论 -
第2章 存储组织【1】
2.1 程序模型和存储映射P89C669保持了所有的80C51的存储空间。附加的存储空间也被透明的作为一部分添加进去,允许扩展寻址。基本的存储空间包括代码存储空间(可以是片内的或者片外的或者二者都有)、外部数据存储空间、特殊功能寄存器和内部数据存储空间(包括片内RAM,寄存器和堆栈),还有后备的被用作内部数据存储的扩展,允许一个较大的处理器堆栈。下图显示了P89C669的程序模型和存储映射:Fig原创 2005-03-24 16:20:00 · 1967 阅读 · 0 评论 -
第4章.外部总线 第5章.中断处理
第4章.外部总线外部总线提供外部设备寻址并且可以对51MX设备进行代码读取,数据读写操作。外部总线使用相同的经典的80C51多路外部总线 ,并允许增加输出地址为23位。4.1 多路外部总线51MX外部总线支持8位数据传输并且支持23位地址口线。需要通过设置MXCON寄存器的EAM位来配置相应口线的有效数量。默认是16位地址总线,可以先后兼容现有的80C51的socket。软件改变总线配置信息通过设原创 2005-03-24 16:30:00 · 1640 阅读 · 0 评论 -
1. 51mx简介
1.1 51 MX 处理器核心Philip 半导体51MX(内存拓展)芯片基于加速80C51构架,执行指令速度2倍于标准80C51设备。51MX的地址空间被从原先51的64KB限制拓展为8M程序区和8M的数据空间。保持对所有51的程序代码的兼容性,使用者可以重用以前的51开发工具来消除转移到全新的平台的必要。51MX保持了80C51的总线结构允许继续使用80C51的接口外围设备和特殊集成电路(原创 2005-03-24 15:31:00 · 2542 阅读 · 0 评论 -
第6章 .P89C669的端口,电源控制和外围设备[1-5]
第6章 .P89C669的端口,电源控制和外围设备注意: 特殊寄存器访问有一定的限制1. 如果没有定义是不能被访问的2. 必须严格按照特殊寄存器的功能来进行设置访问该寄存器3. 特殊寄存器标志位必须按照如下规则进行读写‘-’必须写0‘0’写入0读出返回0 ‘1’写入1读出返回14.6.2 P89C669端口6.2.1 端口 1 2 3 4这些端口就象传统的80C51设备端口一样,他们有相同设置位地原创 2005-03-24 16:35:00 · 2431 阅读 · 0 评论 -
使用ads编写arm7程序步步学
首先建立工程开始打开ads->codeWarrior File->New->Project->ARM Executable Image 选择工程目录建立的是*.mcp工程文件接下和vc一样创建文件这里文件 .s(asm汇编文件).c(标准c).cpp(c++文件)注意不同文件调用的编译器不同所以注意文件后缀名建一个Init.s入口初始文件所有调用将从这个文件入口File->New->File->T原创 2005-09-07 20:03:00 · 3164 阅读 · 0 评论 -
arm7下swi中断模拟程序步步学
介绍个中断使用swi模式特权模式superisor svc供OS使用的一个保护模式其实也是一个中断,对于硬件用户不可干扰确切的来说是用户定义中断模式1.了解正常状态USER状态的可用寄存器R0~R7通用 R8~R12独立寄存器[有些模式寄存器组是独立] R13-SP[各自独立] R14-LR[独立] PC[通用] CPSR[独立]r0~r7通用寄存器同PC下的通用寄存器一样R8~R12 作为备份寄原创 2005-09-07 20:04:00 · 4013 阅读 · 1 评论 -
[UART简单驱动介绍] 代码现成的加了注释看的清楚
定义通用串口结构 typedef volatile struct{ vu16 BR; //baudrate register, 16bit valid, 装入时钟 vu16 EMPTY1; //保留16位 ARM是32位寄存器只用到16位 vu16 TxBUFR; //传输寄存器 vu16 EMPTY2; vu16 RxBUFR; //接收寄存器 vu16 EMPTY3;原创 2005-09-08 16:30:00 · 4506 阅读 · 1 评论 -
[RCCU]各寄存器详细介绍
RCCU_CCR: 时钟控制寄存器1.31~12bit 保留2.11bit EN_HALT: if (RCCU_SMR.HALT == 1 && RCCU_CCR.SRESEN == 1) RCCU_CCR.HALT = 1; Reset!3.10bit EN_STOP: 中断请求停止功能0停止,1开启4.9bit EN_CK2_16: 与RCCU_CFR.CK2_16_I位同步 5.8bit原创 2005-09-29 16:55:00 · 2965 阅读 · 0 评论 -
[PCU]寄存器介绍
PCU_MDIVR MCLK除子控制寄存器1.bit[1:0]: FACT, 是MCLK结果的除子PCU_PDIVR1.bit[9:8]:FACT2 是PCLK1结果的除子2.bit[1:0]:FACT1 是PCLK2结果的除子PCU_PRSTR 外围重起控制寄存器1.bit[2]:EMIRST = 1:外部存储接口设备被重起 EMIRST = 0:EMI工作正常原创 2005-09-30 17:04:00 · 1550 阅读 · 0 评论 -
gdb 调试
用 gdb 调试 GCC 程序 Linux 包含了一个叫 gdb 的 GNU 调试程序. gdb 是一个用来调试 C 和 C++ 程序的强力调试器. 它使你能在程序运行时观察程序的内部结构和内存的使用 情况. 以下是 gdb 所提供的一些功能: 它使你能监视你程序中变量的值. 它使你能设置断点以使程序在指定的代码行上停止执行. 它使你能一行行的执行你的代码. 在转载 2007-09-25 10:09:00 · 2639 阅读 · 0 评论