零组最新的资料文库,详细内容看资源描述下载

AI100_小助手 2020-10-20 04:34:11
零组最新的资料文库,包括:IOT安全 Web安全 安全工具 安全技术 工控安全 内网渗透 系统安全 域渗透
相关下载链接://download.csdn.net/download/xingyu860990/12965369?utm_source=bbsseo
...全文
100 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
第1章 概述 11 1.1 编写目的和作用 11 1.2 文档结构和重点 11 1.3 适用范围 11 1.4 资料引用 12 1.5 术语定义 12 第2章 数据模型总论 14 2.1 数据模型设计的业务驱动力 14 2.1.1 现有数据模型的缺陷 14 2.1.2 业务发展对数据模型提出的要求 14 2.1.3 建立新的计费数据模型的意义和主要思路 17 2.2 数据模型方法论概述 19 2.3 新一代计费数据模型的特点 23 2.4 数据模型设计的核心思路 32 2.5 数据模型设计的主要内容 33 2.6 核心模型(Level0)总体介绍 34 第3章 产品域模型 39 3.1 产品域概念设计 39 3.2 产品域逻辑设计 41 3.2.1 产品(Product)实体 46 3.2.2 产品包(Product_Bundle)实体 49 3.2.3 商品(Product_Offer)实体 51 3.2.4 服务提供(Service_Offer)实体 52 3.2.5 动作(Action)实体 54 3.2.6 产品目录(Product_Catalog)实体 55 3.2.7 产品属性(Product_Attr)实体 56 3.2.8 产品资源(Product_Resource)实体 57 3.2.9 产品关系(Product_Relation)实体 59 3.2.10 产品关系类型(Product_Relation_Type)实体 61 3.2.11 产品包明细(Product_Bundle_Detail)实体 62 3.2.12 产品包属性(Product_Bundle_Attr)实体 63 3.2.13 产品计费事件类型(Product_Usage_Event_Type)实体 65 3.2.14 商品关系(Product_Offer_Relationship)实体 66 3.2.15 商品明细(Product_Offer_Detail)实体 67 3.2.16 商品限制(Product_Offer_Restrication)实体 68 3.2.17 商品属性(Product_Offer_Attr)实体 69 3.2.18 市场策略(Maket_Strategy)实体 71 3.2.19 外部产品(External_Product)实体 72 3.2.20 产品目录节点(Product_Catalog_Item)实体 73 3.2.21 产品目录节点元素(Product_Catalog_Item_Element)实体 74 3.2.22 动作类型(Action_Type)实体 75 3.2.23 计费模式(Billing_Mode)实体 76 3.2.24 属性值单位(Attr_Value_Unit)实体 76 3.2.25 属性值类型(Attr_Value_Type)实体 77 3.2.26 时间段(Time_Segment)实体 77 第4章 客户域模型 79 4.1 客户域概念设计 79 4.2 客户域逻辑设计 80 4.2.1 客户(Cust)实体 84 4.2.2 主产品实例/用户(Serv)实体 85 4.2.3 产品实例附加属性(Serv_Attr)实体 87 4.2.4 产品包实例附加属性(Product_Bundle_Instance_Attr)实体 89 4.2.5 商品实例附加属性(Product_Offer_Instance_Attr)实体 90 4.2.6 产品包实例(Product_Bundle_Instance)实体 91 4.2.7 商品实例(Product_Offer_Instance)实体 93 4.2.8 客户群(Cust_Group)实体 94 4.2.9 用户群(Serv_Group)实体 95 4.2.10 附属产品实例(Serv_Product)实体 96 4.2.11 客户附加信息(Cust_Ass_Info)实体 97 4.2.12 客户附加信息项目(Cust_Ass_Info_Item)实体 99 4.2.13 客户个人信息(Cust_Person_Info)实体 99 4.2.14 客户交互详细信息(Cust_Interaction_Detail)实体 101 4.2.15 客户交互信息(Cust_Interaction)实体 102 4.2.16 客户联系信息(Cust_Contact_Info)实体 103 4.2.17 客户群成员(Cust_Group_Member)实体 105 4.2.18 客户识别信息(Cust_Identification)实体 106 4.2.19 客户信用度(Cust_Credit)实体 107 4.2.20 客户信用度评估记录(Cust_Credit_Record)实体 108 4.2.21 客户定价参数(Cust_Price_Plan_Para)实体 109 4.2.22 客户定价对象(Cust_Price_Plan_Object)实体 110 4.2.23 客户定价信息(Cust_Price_Plan)实体 111 4.2.24 客户忠诚度评估记录(Cust_Loyalty_Record)实体 113 4.2.25 企业客户信息(Cust_Corporate_Info)实体 114 4.2.26 客户协议(Agreement)实体 116 4.2.27 协议相关对象(Agreement_Object)实体 118 4.2.28 协议属性(Agreement_Attr)实体 119 4.2.29 商品明细实例表 (Offer_Detail_Instance)实体 120 4.2.30 产品包明细实例表 (Product_Bundle_Detail_Instance)实体 121 4.2.31 使用者属性(Serv_Subsriber)实体 122 4.2.32 用户群对应关系(Serv_Group_Member)实体 123 4.2.33 主产品标识(Serv_Identification)实体 125 4.2.34 主产品附加号码信息(Serv_Add_Acc_Nbr)实体 126 4.2.35 用户地域属性(Serv_Location)实体 127 4.2.36 主产品实例状态(Serv_State_Attr)实体 129 4.2.37 附属产品实例附加属性(Serv_Product_Attr)实体 130 4.2.38 参与人(Party)实体 131 4.2.39 参与人角色(Party_Role)实体 132 4.2.40 员工(Staff)实体 133 4.2.41 参与人识别信息(Party_Identification)实体 135 4.2.42 对等运营商(Emulatory_Partner)实体 136 4.2.43 个人(Individual)实体 137 4.2.44 组织(Organization)实体 138 4.2.45 行业(Industry)实体 139 4.2.46 合作伙伴(Cooperant_Pard)实体 139 4.2.47 联系信息(Contact_Medium)实体 140 4.2.48 渠道分类(Channel_Segment)实体 141 4.2.49 权限(Privilege)实体 142 4.2.50 权限组(Role)实体 143 4.2.51 权限组权限(Role_Privilege)实体 144 4.2.52 信用度和积分规则(Acct_Factor_Rule)实体 145 4.2.53 信用度和积分因素(Acct_Factor)实体 146 4.2.54 信用度和积分因素值(Acct_Factor_Value)实体 147 4.2.55 用户积分(Integral_Serv)实体 148 4.2.56 用户积分兑换规则(Integral_Present_Rule)实体 150 4.2.57 用户积分兑换情况(Integral_Present_Item)实体 151 4.2.58 员工权限(Staff_Privilege)实体 153 4.2.59 员工权限组(Staff_Role)实体 154 4.2.60 赠品定义(Integral_Present)实体 155 4.2.61 帐户信用度比重(Credit_Acct_Percent)实体 156 4.2.62 信用度和积分指标(Acct_Target)实体 157 4.2.63 积分类型(Integral_Type)实体 157 4.2.64 交互信息项目(Cust_Interaction_Item)实体 158 第5章 定价域模型 159 5.1 定价域概念设计 159 5.2 定价域逻辑设计 160 5.2.1 定价计划(Pricing_Plan)实体 164 5.2.2 定价组合(Pricing_Combine)实体 166 5.2.3 事件定价策略(Event_Pricing_Strategy)实体 170 5.2.4 定价段落(Pricing_Section)实体 173 5.2.5 资费标准(Tariff)实体 181 5.2.6 优惠计算(Discount_Express)实体 189 5.2.7 定价参考对象(Pricing_Ref_Object)实体 198 5.2.8 参考值定义(Ref_Value)实体 203 5.2.9 定价包含的对象(Prcing_Objects)实体 208 5.2.10 定价组合关系(Pricing_Combine_Relation)实体 209 5.2.11 定价参数定义(Pricing_Param_Define)实体 210 5.2.12 定价参数取值(Pricing_Param_Value)实体 210 5.2.13 定价参数有限枚举取值定义(Pricing_Enum_Param)实体 212 5.2.14 定价段落关系(Pricing_Section_Relation)实体 213 5.2.15 定价段落类型(Pricing_Section_Type)实体 214 5.2.16 定价判断条件(Pricing_Rule)实体 214 5.2.17 度量方法(Measure_Method)实体 216 5.2.18 积量类型描述(Ratable_Resource)实体 217 5.2.19 累加对象定义表(Aggregate_Object)实体 218 5.2.20 区表(Zone)实体 219 5.2.21 区表节点(Zone_Item)实体 219 5.2.22 区表节点参考对象取值(Zone_Item_Value)实体 221 5.2.23 生命周期(Life_Cycle)实体 222 5.2.24 条件运算符(Operators)实体 222 5.2.25 优惠计算对象(Discount_Calc_Object)实体 223 5.2.26 优惠计算方法描述(Discount_Method)实体 224 5.2.27 优惠计算时间限制(Discount_Time_Limit)实体 224 5.2.28 优惠摊分方式(Discount_Repatition_Type)实体 226 5.2.29 优惠应用对象(Discount_Target_Object)实体 227 5.2.30 属主定义表(Owner)实体 228 5.2.31 资费单位描述(Tariff_Unit)实体 229 5.2.32 资费计算方法描述(Tariff_Calc_Desc)实体 230 第6章 计费事件域模型 232 6.1 计费事件域概念设计 232 6.2 计费事件域逻辑设计 233 6.2.1 计费帐务事件类型(Ratable_Event_Type)实体 236 6.2.2 批价后计费帐务事件(Rated_Event)实体 237 6.2.3 源事件类型(Source_Event_Type)实体 238 6.2.4 源事件(Event)实体 239 6.2.5 计费帐务事件格式(Ratable_Event_Format)实体 240 6.2.6 计费累积值(Ratable_Resource_Accumulator)实体 242 6.2.7 计费帐务事件格式项(Ratable_Event_Format_Item)实体 243 6.2.8 事件属性(Event_Attr)实体 244 6.2.9 预处理后计费帐务事件(Pre_Processed_Event)实体 245 6.2.10 普通源事件格式(Event_Format_Normal)实体 246 6.2.11 其它源事件格式(Event_Format_Other)实体 247 6.2.12 源事件格式(Event_Format)实体 248 6.2.13 源事件格式段(Event_Format_Segment)实体 249 6.2.14 源事件格式项(Event_Format_Item)实体 250 6.2.15 数据格式(Data_Format)实体 252 6.2.16 事件内容位置(Event_Content_Index)实体 253 6.2.17 事件内容(Event_Content)实体 253 第7章 帐务域模型 255 7.1 帐务域概念设计 255 7.2 帐务域逻辑设计 255 7.2.1 帐户(Acct)实体 259 7.2.2 帐目(Acct_Item)实体 260 7.2.3 余额帐本(Acct_Balance)实体 263 7.2.4 付款记录(Payment)实体 265 7.2.5 销帐记录(Bill)实体 267 7.2.6 帐务定制关系(Serv_Acct)实体 269 7.2.7 帐务周期(Billing_Cycle)实体 272 7.2.8 补收补退(Plusminus)实体 274 7.2.9 参与摊分对象(Before_Depart)实体 276 7.2.10 当期积数(Interest_BALANCE)实体 277 7.2.11 调帐帐目(ACCT_ITEM_ADJUST_RECORD)实体 278 7.2.12 调帐日志(Charge_Adjust_Log)实体 279 7.2.13 发票记录(Invoice)实体 280 7.2.14 付款方式(Payment_Method)实体 282 7.2.15 欠费处理对象(Owe_Object)实体 283 7.2.16 欠费处理任务(Owe_Task)实体 283 7.2.17 欠费处理任务_处理对象(Owe_Task_Object)实体 285 7.2.18 欠费处理时间信息(Owe_Datetype_Info)实体 285 7.2.19 欠费处理业务类型(Owe_Business_Type)实体 287 7.2.20 欠费类型参考帐目(Owe_Type_Accttype)实体 288 7.2.21 欠费类型限额(Owe_Type_Limit)实体 289 7.2.22 欠费时间类型(Owe_Date_Type)实体 290 7.2.23 摊分比例(Depart_Rate)实体 290 7.2.24 摊分结果(Depart_Result_List)实体 292 7.2.25 摊分类型(Depart_Type)实体 293 7.2.26 现金支付方案(Cash_Plan)实体 293 7.2.27 信用卡支付方案(Ccard_Plan)实体 295 7.2.28 银行(Bank)实体 297 7.2.29 银行分行(Bank_Branch)实体 297 7.2.30 银行托收支付方案(Bank_Plan)实体 298 7.2.31 余额对象关系(Acct_Balance_Obj)实体 300 7.2.32 余额类型(Balance_Type)实体 301 7.2.33 预存回报信息(Interest_Info)实体 303 7.2.34 预存利率(Interest_Rate)实体 303 7.2.35 预付费支付方案(Prepaid_Plan)实体 304 7.2.36 帐单_发票要求(Bill_Requement)实体 306 7.2.37 帐单变量(Variable)实体 307 7.2.38 帐单格式(Bill_Format)实体 308 7.2.39 帐单记录(Tab)实体 309 7.2.40 帐单可变文本(Remark)实体 310 7.2.41 帐单项(Bill_Item)实体 311 7.2.42 帐户关系(Acct_Relationship)实体 312 7.2.43 帐户群(Acct_Catg)实体 313 7.2.44 帐户群_帐户(Acct_Catg_Acct)实体 313 7.2.45 帐目来源(Item_Source)实体 315 7.2.46 帐目类型(Acct_Item_Type)实体 315 7.2.47 帐目类型归类(Acct_Item_Class)实体 317 7.2.48 帐目组(Item_Group)实体 317 7.2.49 帐目组_帐目(Group_Item)实体 318 7.2.50 帐务周期类型(Billing_Cycle_Type)实体 319 7.2.51 帐单格式_帐单项(Bill_Format_Bill_Item)实体 320 7.2.52 帐单项_帐目(Bill_Item_Acct_Item)实体 321 7.2.53 帐户信用度(Acct_Credit)实体 322 7.2.54 支付规则(Payment_Rule)实体 323 7.2.55 专款专用描述(Special_Payment_Desc)实体 324 7.2.56 专款专用详情(Special_Payment)实体 325 7.2.57 子周期(Sub_Billing_Cycle)实体 326 7.2.58 余额来源记录(Balance_Source)实体 328 7.2.59 余额支出记录(Balance_Payout)实体 329 7.2.60 余额支出帐目(Acct_Item_Outpay)实体 331 第8章 地域模型 333 8.1 地域概念设计 333 8.2 地域逻辑设计 333 8.2.1 电信管理区域(Region)实体 334 8.2.2 地址(Address)实体 335 8.2.3 逻辑地址(Local_Address)实体 336 8.2.4 营业厅(Site)实体 337 8.2.5 局向(Exchange)实体 338 8.2.6 资源片区(Resource_Zone)实体 340 第9章 共享信息数据模型 342 9.1 SID概述 342 9.2 数据模型实体CRUD矩阵 346 第10章 数据中间层设计 356 10.1 总体设计 356 10.2 统计要素层设计 357 10.2.1 长途话务量分析 357 10.2.2 长途中继话务分析 359 10.2.3 本地网话务量分析 360 10.2.4 市话跳表中间表 362 10.2.5 窄带数据中间表 363 10.2.6 IP业务使用情况中间表 365 10.2.7 每日应收分析 366 10.2.8 每月应收分析 368 10.2.9 每日非应收分析 369 10.2.10 每月非应收格式 371 10.2.11 缴费统计分析 372 10.2.12 欠费统计分析 374 10.2.13 营业一次性统计分析 375 10.2.14 用户到达数分析 377 10.2.15 用户停机、拆机分析 378 10.2.16 新增用户消费分析 380 10.2.17 零次用户数分析 381 10.2.18 消费异常用户分析 383 10.2.19 用户超长话单分析 385 第11章 模型验证实例 387 11.1 模型验证的目的 387 11.2 模型验证的方法 387 11.2.1 模型表达方法 388 11.2.2 简化约定 389 11.3 产品模型验证 390 11.3.1 用例验证目的 390 11.3.2 业务场景 390 11.3.3 实例验证 391 11.4 事件模型验证 398 11.4.1 用例验证目的 399 11.4.2 业务场景 399 11.4.3 实例验证 399 11.5 新增业务、产品目录变更综合范例 405 11.5.1 用例验证目的 405 11.5.2 业务场景 406 11.5.3 实例验证 406 第12章 附录 432 12.1 计费模型主要名词解释 432 12.2 编码规范 434 12.2.1 客户统一编号(Cust.Cust_Code) 434 12.2.2 定价段落类型(Pricing_Section_Type) 434 12.2.3 度量方法(Measure_Method) 434 12.2.4 积量类型描述(Ratable_Resource) 434 12.2.5 条件运算符(Operators) 435 12.2.6 优惠摊分方式(Discount_Repatition_Type) 435 12.2.7 资费计算方法描述(Tariff_Calc_Desc) 435 12.2.8 计费事件类型(Event_Type) 435 12.2.9 事件属性(Event_Attr_Id) 436 12.2.10 帐务周期类型(Billing_Cycle_Type) 437 12.2.11 帐目类型(Acct_Item_Type) 437 12.2.12 帐目类型归类(Acct_Item_Class) 439 12.2.13 帐目来源(Item_Source) 440 12.2.14 付款方式(Payment_Method) 440 12.3 类型定义 440 12.3.1 字符串型值域(Domain_String) 441 12.3.2 费率域(Domain_Tariff) 442 12.3.3 描述域(Domain_Desc) 442 12.3.4 标准编码域(Domain_Code) 444 12.3.5 短数量域(Domain_Duration) 444 12.3.6 布尔值域(Domain_Boolean) 445 12.3.7 优先级域(Domain_Priority) 446 12.3.8 名称域(Domain_Name) 446 12.3.9 ID域(Domain_Id) 449 12.3.10 度量值域(Domain_Credit) 460 12.3.11 金额域(Domain_Money) 461 12.3.12 纯日期域(Domain_Date) 462 12.3.13 纯时间域(Domain_Time) 462 12.3.14 日期时间域(Domain_Datetime) 462 12.3.15 号码域(Domain_Ext_Number) 467 12.3.16 大ID域(Domain_Large_Id) 467 12.3.17 数量域(Domain_Count) 471 12.3.18 月份域(Domain_Month) 473 12.3.19 邮编域(Domail_Postcode) 473 12.3.20 普通记录状态域(Domain_Main_State) 473 12.3.21 长文字描述域(Domain_Long_Desc) 474 12.3.22 产品类别域(Domain_Product_Type) 474 12.3.23 产品类型域(Domain_Product_Classification) 475 12.3.24 产品目录类型域(Domain_Product_Catg_Type) 475 12.3.25 产品资源类型域(Domain_Product_Device_Type) 475 12.3.26 产品提供商域(Domain_Product_Provider) 476 12.3.27 动作域(Domain_Action) 476 12.3.28 服务提供类型域(Domain_Service_Offer_Type) 477 12.3.29 产品关系类型域(Domain_Product_Relation_Type) 477 12.3.30 计费模式域(Domain_Billing_Mode) 478 12.3.31 限制域类型域(Domain_Restrication_Domain_Type) 478 12.3.32 元素类型域(Domain_Element_Type) 479 12.3.33 关系操作指示类型域(Domain_Operation_Flag) 479 12.3.34 关系域域(Domain_Product_Relation_Domain) 479 12.3.35 公司规模域(Domain_Company_Size) 480 12.3.36 交互类型域(Domain_Event_Type_Id) 480 12.3.37 客户类型域(Domain_Cust_Type_Id) 480 12.3.38 联系方式域(Domain_Contact_Method) 481 12.3.39 实例类型域(Domain_Instance_Type) 481 12.3.40 协议类型域(Domain_Agreement_Type) 482 12.3.41 协议状态域(Domain_Agreement_State) 482 12.3.42 信用等级域(Domain_Credit_Grade) 482 12.3.43 学历域(Domain_Cust_Education_Level) 482 12.3.44 用户状态域(Domain_Serv_State) 483 12.3.45 证件类型域(Domain_Certificate_Type) 483 12.3.46 职业域(Domain_Cust_Occupation) 484 12.3.47 宗教信仰域(Domain_Cust_Religion) 484 12.3.48 参与人角色类型域(Domain_Party_Role_Type) 484 12.3.49 参与人社会标识类型域(Domain_Social_Id_Type) 485 12.3.50 调整方式域(Domain_Adjust_Method) 485 12.3.51 范围级别域(Domain_Scope_Level) 485 12.3.52 合作伙伴类型域(Domain_Pard_Type) 486 12.3.53 婚否域(Domain_Marital_Status) 486 12.3.54 渠道分类标准域(Domain_Channel_Segment_Type) 486 12.3.55 使用类型域(Domain_Privilege_Type) 487 12.3.56 应用代码域(Domain_App_Code) 487 12.3.57 赠送类别域(Domain_Present_Type) 487 12.3.58 指标类型域(Domain_Target_Type) 488 12.3.59 属性类别域(Domain_Property_Type) 488 12.3.60 源事件格式分类域(Domain_S_Event_Format_Class) 488 12.3.61 计费事件格式类型域(Domain_Event_Format_Type) 489 12.3.62 事件类型归类域(Domain_Sum_Event_Type) 489 12.3.63 事件属性类型域(Domain_Event_Attr_Type) 489 12.3.64 数据类型域(Domain_Data_Type) 490 12.3.65 源事件格式段类型域(Domain_S_Event_Segment_Type) 490 12.3.66 源事件格式类型域(Domain_S_Event_Format_Type) 490 12.3.67 源事件属性编码类型域(Domain_S_Event_Code_Type) 491 12.3.68 对齐方式域(Domain_Alignment_Type) 491 12.3.69 子周期类型域(Domain_Sub_Cycle_Type) 491 12.3.70 周期单位域(Domain_Cycle_Unit) 492 12.3.71 帐目来源类型域(Domain_Item_Source) 492 12.3.72 帐户角色域(Domain_Acct_Role) 492 12.3.73 帐户关系类型域(Domain_Acct_Rel_Type) 493 12.3.74 帐单项类型域(Domain_Bill_Item_Type) 493 12.3.75 帐单投递周期域(Domain_Bill_Post_Cycle) 493 12.3.76 帐单投递方式域(Domain_Bill_Post_Method) 494 12.3.77 帐单类别域(Domain_Bill_Type) 494 12.3.78 允许打印标志域(Domain_Print_Flag) 494 12.3.79 预付费类型域(Domain_Pre_Payment_Type) 494 12.3.80 余额对象类型域(Domain_Balance_Obj_Type) 495 12.3.81 余额调帐标志域(Domain_Balance_Adjust_Flag) 495 12.3.82 银行帐号类型域(Domain_Bank_Acct_Type) 495 12.3.83 提取标志域(Domain_Allow_Draw) 496 12.3.84 提供发票标志域(Domain_Inv_Offer) 496 12.3.85 欠费处理对象类型域(Domain_Owe_Object_Type) 496 12.3.86 类型级别域(Domain_Tyle_Level) 497 12.3.87 计总帐目类型域(Domain_Item_Total_Mark) 497 12.3.88 合帐标志域(Domain_Megre_Flag) 497 12.3.89 付款记录状态域(Domain_Payment_State) 498 12.3.90 付款操作类别域(Domain_Payment_Operate_Type) 498 12.3.91 封顶类型域(Domain_Ceiling_Type) 498 12.3.92 分成方式域(Domain_Depart_Method) 499 12.3.93 费用帐目类型域(Domain_Item_Charge_Mark) 499 12.3.94 兑现状态域(Domain_Encash_State) 499 12.3.95 打印条件域(Domain_Print_Condition) 500 12.3.96 打印格式域(Domain_Print_Format) 500 12.3.97 处理周期域(Domain_Ower_Cycle) 500 12.3.98 参与摊分对象类型域(Domain_Depart_Obj_Type) 500 12.3.99 余额帐本来源操作类型域(Domain_Balance_Source_Oper) 501 12.3.100 余额收入来源类型域(Domain_Balance_Source_Type) 501 12.3.101 余额帐本支出操作类型域(Domain_Balance_Outpay_Oper) 502 12.3.102 付费方标志域(Domain_Charge_Party_Flag) 502 12.3.103 对象类型域(Domain_Object_Type) 502 12.3.104 日期生效方式域(Domain_Date_Eff_Type) 503 12.3.105 计算方向域(Domain_Calc_Direction) 503 12.3.106 属主属性类型域(Domain_Owner_Property_Type) 504 12.3.107 有效期类型域(Domain_Duration_Type) 504 12.3.108 周期类型域(Domain_Cycle_Type) 504 12.3.109 关系类型域(Domain_Relation_Type) 505 12.3.110 资费标准类型域(Domain_Tariff_Type) 505 12.3.111 数值类型域(Domain_Value_Type) 505 12.3.112 参考值类型域(Domain_Ref_Value_Type) 506 12.3.113 分段计费类型域(Domain_Section_Calc_Type) 506 12.3.114 逻辑地址类型域(Domain_Local_Address_Type) 506 12.3.115 区域级别域(Domain_Region_Level) 507 12.4 产品清单 507 12.4.1 主产品清单 507 12.4.2 附属产品 511 12.4.3 产品相关动作 513
新闻网页贴吧知道MP3图片视频百科文库 帮助设置 首页 自然 文化 地理 历史 生活 社会 艺术 人物 经济 科学 体育 欧冠 核心用户 进程管理 百科名片 引是正在运行的程序实体,并且包括这个运行的程序中占据的所有系统资源,比如说CPU(寄存器),IO,内存,网络资源等。很多人在回答进程的概念的时候,往往只会说它是一个运行的实体,而会忽略掉进程所占据的资源。比如说,同样一个程序,同一时刻被两次运行了,那么他们就是两个独立的进程。linux下查看系统进程的命令是ps。 目录 进程的分类1.基本系统进程 2.常见系统进程解释 (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) (15) (16) (17) (18) (19) (20) (21) (22) (23) (24) (25) (26) (27) (28) 进程管理进程的分类 1.基本系统进程 2.常见系统进程解释 (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) (15) (16) (17) (18) (19) (20) (21) (22) (23) (24) (25) (26) (27) (28) 进程管理 展开 编辑本段进程的分类 1.基本系统进程   Csrss.exe:这是子系统服务器进程,负责控制Windows创建或删除线程以及16位的虚拟DOS环境。   System Idle Process:这个进程是作为单线程运行在每个处理器上,并在系统不处理其它线程的时候分派处理器的时间。   Smss.exe:这是一个会话管理子系统,负责启动用户会话。   Services.exe:系统服务的管理工具。   Lsass.exe:本地的安全授权服务。   Explorer.exe:资源管理器。   Spoolsv.exe:管理缓冲区中的打印和传真作业。   Svchost.exe:这个进程要着重说明一下,有不少朋友都有这种错觉:若是在“任务管理器”中看到多个Svchost.exe在运行,就觉得是有病毒了。其实并不一定,系统启动的时候,Svchost.exe将检查注册表中的位置来创建需要加载的服务列表,如果多个Svchost.exe同时运行,则表明当前有多组服务处于活动状态;多个DLL文件正在调用它。 2.常见系统进程解释 (1)   system process   进程文件: system process   进程名称: Windows内存处理系统进程   描述: Windows页面内存管理进程,拥有0级优先。   是否为系统进程: 是 (2)   alg.exe   进程文件: alg or alg.exe   进程名称: 应用层网关服务   描述: 这是一个应用层网关服务用于网络共享。   是否为系统进程: 是 (3)   csrss.exe   进程文件: csrss or csrss.exe   进程名称: Client/Server Runtime Server Subsystem   描述: 客户端服务子系统,用以控制Windows图形相关子系统。   是否为系统进程: 是 (4)   ddhelp.exe   进程文件: ddhelp or ddhelp.exe   进程名称: DirectDraw Helper   描述: DirectDraw Helper是DirectX这个用于图形服务的一个组成部分。   是否为系统进程: 是 (5)   dllhost.exe   进程文件: dllhost or dllhost.exe   进程名称: DCOM DLL Host进程   描述: DCOM DLL Host进程支持基于COM对象支持DLL以运行Windows程序。   是否为系统进程: 是 (6)   inetinfo.exe   进程文件: inetinfo or inetinfo.exe   进程名称: IIS Admin Service Helper   描述: InetInfo是Microsoft Internet Infomation Services (IIS)的一部分,用于Debug调试除错。   是否为系统进程: 是 (7)   internat.exe   进程文件: internat or internat.exe   进程名称: Input Locales   描述: 这个输入控制图标用于更改类似国家设置、键盘类型和日期格式。   是否为系统进程: 是 (8)   kernel32.dll   进程文件: kernel32 or kernel32.dll   进程名称: Windows壳进程   描述: Windows壳进程用于管理多线程、内存和资源。   是否为系统进程: 是 (9)   lsass.exe   进程文件: lsass or lsass.exe   进程名称: 本地安全权限服务   描述: 这个本地安全权限服务控制Windows安全机制。   是否为系统进程: 是 (10)   mdm.exe   进程文件: mdm or mdm.exe   进程名称: Machine Debug Manager   描述: Debug除错管理用于调试应用程序和Microsoft Office中的Microsoft Script Editor脚本编辑器。   是否为系统进程: 是 (11)   mmtask.tsk   进程文件: mmtask or mmtask.tsk   进程名称: 多媒体支持进程   描述: 这个Windows多媒体后台程序控制多媒体服务,例如MIDI。   是否为系统进程: 是 (12)   mprexe.exe   进程文件: mprexe or mprexe.exe   进程名称: Windows路由进程   描述: Windows路由进程包括向适当的网络部分发出网络请求。   是否为系统进程: 是 (13)   msgsrv32.exe   进程文件: msgsrv32 or msgsrv32.exe   进程名称: Windows信使服务   描述: Windows信使服务调用Windows驱动和程序管理在启动。   是否为系统进程: 是 (14)   mstask.exe   进程文件: mstask or mstask.exe   进程名称: Windows计划任务   描述: Windows计划任务用于设定继承在什么时间或者什么日期备份或者运行。   是否为系统进程: 是 (15)   regsvc.exe   进程文件: regsvc or regsvc.exe   进程名称: 远程注册表服务   描述: 远程注册表服务用于访问在远程计算机的注册表。   是否为系统进程: 是 (16)   rpcss.exe   进程文件: rpcss or rpcss.exe   进程名称: RPC Portmapper   描述: Windows 的RPC端口映射进程处理RPC调用(远程模块调用)然后把它们映射给指定的服务提供者。   是否为系统进程: 是 (17)   services.exe   进程文件: services or services.exe   进程名称: Windows Service Controller   描述: 管理Windows服务。   是否为系统进程: 是 (18)   smss.exe   进程文件: smss or smss.exe   进程名称: Session Manager Subsystem   描述: 该进程为会话管理子系统用以初始化系统变量,MS-DOS驱动名称类似LPT1以及COM,调用Win32壳子系统和运行在Windows登陆过程。   是否为系统进程: 是 (19)   snmp.exe   进程文件: snmp or snmp.exe   进程名称: Microsoft SNMP Agent   描述: Windows简单的网络协议代理(SNMP)用于监听和发送请求到适当的网络部分。   是否为系统进程: 是 (20)   spool32.exe   进程文件: spool32 or spool32.exe   进程名称: Printer Spooler   描述: Windows打印任务控制程序,用以打印机就绪。   是否为系统进程: 是 (21)   spoolsv.exe   进程文件: spoolsv or spoolsv.exe   进程名称: Printer Spooler Service   描述: Windows打印任务控制程序,用以打印机就绪。   是否为系统进程: 是 (22)   stisvc.exe   进程文件: stisvc or stisvc.exe   进程名称: Still Image Service   描述: Still Image Service用于控制扫描仪和数码相机连接在Windows。   是否为系统进程: 是 (23)   svchost.exe   进程文件: svchost or svchost.exe   进程名称: Service Host Process   描述: Service Host Process是一个标准的动态连接库主机处理服务。   是否为系统进程: 是 (24)   system   进程文件: system or system   进程名称: Windows System Process   描述: Microsoft Windows系统进程。   是否为系统进程: 是 (25)   taskmon.exe   进程文件: taskmon or taskmon.exe   进程名称: Windows Task Optimizer   描述: windows任务优化器监视你使用某个程序的频率,并且通过加载那些经常使用的程序来整理优化硬盘。   是否为系统进程: 是 (26)   tcpsvcs.exe   进程文件: tcpsvcs or tcpsvcs.exe   进程名称: TCP/IP Services   描述: TCP/IP Services Application支持透过TCP/IP连接局域网和Internet。   是否为系统进程: 是 (27)   winlogon.exe   进程文件: winlogon or winlogon.exe   进程名称: Windows Logon Process   描述: Windows NT用户登陆程序。   是否为系统进程: 是 (28)   winmgmt.exe   进程文件: winmgmt or winmgmt.exe   进程名称: Windows Management Service   描述: Windows Management Service透过Windows Management Instrumentation data (WMI)技术处理来自应用客户端的请求。   是否为系统进程: 是 编辑本段进程管理   操作系统的职能之一,主要是对处理机进行管理 。为了提高CPU的利用率而采用多道程序技术。通过进程管理来协调多道程序之间的关系,使CPU得到充分的利用。
文库帮手网 www.365xueyuan.com 免费帮下载 百度文库积分 资料 本文由pengliuhua2005贡献 doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 51 单片机设计跑马灯的程序用(c 语言)编写 P1 口接 8 个发光二极管共阳,烧入下面程序 #include unsigned char i; unsigned char temp; unsigned char a,b; void delay(void) { unsigned char m,n,s; for(m=20;m>0;m--) for(n=20;n>0;n--) for(s=248;s>0;s--); } void main(void) { while(1) { temp=0xfe; P1=temp; delay(); for(i=1;i<8;i++) { a=temp(8-i); P1=a|b; delay(); } for(i=1;i>i; b=temp<= 4000 ){ us250 = 0; if( ++s1 >= 10 ){ s1 = 0; if( ++s10 >= 6 ) s10 = 0; if( key10 == 1 ){ //等松键 if( P3.2 == 1 ) key10=0; } //未按键 37. else{ 38. 39. 40. 41. if( P3.2 == 0 ){ key10 = 1; if( ++s10 >= 6 ) s10 = 0; break; //结束“循环 2”,修改显示 42. 43. 44. 45. 46. } } //按个位键处理 P3.3 = 1; //P3.3 作为输入,先要输出高电平 if( key1 == 1 ) //等松键 47. { if( P3.3 == 1 ) key1=0; } 48. 49. 50. 51. 52. 53. 54. 55. } } //循环 2’end }//循环 1’end } else { //未按键 if( P3.3 == 0 ){ key1 = 1; if( ++s1 >= 10 ) s1 = 0; break; //结束“循环 2”,修改显示 56. }//main’end 第三节: 第三节:十字路口交通灯 如果一个单位时间为 1 秒,这里设定的十字路口交通灯按如下方式四个步骤循环工作: 60 个单位时间,南北红,东西绿;λ 10 个单位时间,南北红,东西黄;λ 60 个单位时间,南北绿,东西红;λ 10 个单位时间,南北黄,东西红;λ 解:用 P1 端口的 6 个引脚控制交通灯,高电平灯亮,低电平灯灭。 代码 1. 2. 3. 4. 5. 6. 7. 8. 9. #include //sbit 用来定义一个符号位地址,方便编程,提高可读性,和可移植性 sbit SNRed =P1^0; //南北方向红灯 //南北方向黄灯 //南北方向绿灯 //东西方向红灯 //东西方向黄灯 //东西方向绿灯 sbit SNYellow =P1^1; sbit SNGreen =P1^2; sbit EWRed =P1^3; sbit EWYellow =P1^4; sbit EWGreen =P1^5; /* 用软件产生延时一个单位时间 */ 10. void Delay1Unit( void ) 11. { 12. 13. 14. unsigned int i, j; for( i=0; i<1000; i++ ) for( j<0; j= 8 ) i=0; 12. } 13. void Timer0IntRoute( void ) interrupt 1 14. { 15. 16. TL0 = -1000; //由于 TL0 只有 8bits,所以将(-1000)低 8 位赋给 TL0 TH0 = (-1000)>>8; //取(-1000)的高 8 位赋给 TH0,重新定时 1ms 17. 18. } DisplayBrush(); 19. void Timer0Init( void ) 20. { TMOD=(TMOD & 0xf0) | 0x01; //初始化,定时器 T0,工作方式 1 21. 22. 23. 24. 25. } 26. void Display( unsigned char index, unsigned char dataValue ){ DisBuf[ inde x ] = dataValue; } 27. void main( void ) 28. { 29. unsigned char i; 30. for( i=0; i>8; TR0 = 1; ET0 = 1; //允许 T0 开始计数 //允许 T0 计数溢出时产生中断请求 第五节:键盘驱动 第五节: 指提供一些函数给任务调用,获取按键信息,或读取按键值。 定义一个头文档 ,描述可用函数,如下: 代码 1. 2. 3. 4. 5. 6. 7. #ifndef _KEY_H_ #define _KEY_H_ //防止重复引用该文档,如果没有定义过符号 _KEY_H_,则编译下面语句 防止重复引用该文档, , 防止重复引用该文档 //只要引用过一次,即 #include ,则定义符号 _KEY_H_ 只要引用过一次, 只要引用过一次 , unsigned char keyHit( void ); //如果按键,则返回非0,否则返回0 unsigned char keyGet( void ); //读取按键值,如果没有按键则等待到按键为止 void keyPut( unsigned char ucKeyVal ); //保存按键值 ucKeyVal 到按键缓冲队列末 void keyBack( unsigned char ucKeyVal ); //退回键值 ucKeyVal 到按键缓冲队列首 #endif 定义函数体文档 KEY.C,如下: 代码 1. 2. 3. #include “key.h” #define KeyBufSize 16 //定义按键缓冲队列字节数 定义按键缓冲队列字节数 unsigned char KeyBuf[ KeyBufSize ]; //定义一个无符号字符数组作为按键缓冲队列。该队列为 先进 4. 5. 6. 7. 8. 9. 10. //先出,循环存取,下标从0到 KeyBufSize-1 unsigned char KeyBufWp=0; //作为数组下标变量,记录存入位置 unsigned char KeyBufRp=0; //作为数组下标变量,记录读出位置 //如果存入位置与读出位置相同,则表明队列中无按键数据 unsigned char keyHit( void ) { if( KeyBufWp == KeyBufRp ) return( 0 ); else return( 1 ); } 11. unsigned char keyGet( void ) 12. { unsigned char retVal; //暂存读出键值 13. while( keyHit()==0 ); //等待按键,因为函数 keyHit()的返回值为 0 表示无按键 14. retVal = KeyBuf[ KeyBufRp ]; //从数组中读出键值 15. if( ++KeyBufRp >= KeyBufSize ) KeyBufRp=0; //读位置加1, 超出队列则循环回初始位置 16. 17. } 18. 19. void keyPut( unsigned char ucKeyVal ) 20. { KeyBuf[ KeyBufWp ] = ucKeyVal; //键值存入数组 21. if( ++KeyBufWp >= KeyBufSize ) KeyBufWp=0; //存入位置加1, 超出队列则循环回初始位置 return( retVal ); 22. } 23. 由于某种原因,读出的按键,没有用,但其它任务要用该按键,但传送又不方便。此时可以退回按键队列。 就如取错了信件,有必要退回一样 24. void keyBack( unsigned char ucKeyVal ) 25. { 26. 27. 如果 KeyBufRp=0; 减 1 后则为 FFH,大于 KeyBufSize,即从数组头退回到数组尾。或者由于干扰使得 KeyBufRp 超出队列位置,也要调整回到正常位置, 28. */ 29. if( --KeyBufRp >= KeyBufSize ) KeyBufRp=KeyBufSize-1; 30. KeyBuf[ KeyBufRp ] = ucKeyVal; //回存键值 31. } 下面渐进讲解键盘物理层的驱动。 电路共同点:P2 端口接一共阴数码管,共阴极接 GND,P2.0 接 a 段、P2.1 接 b 段、…、P2.7 接 h 段。 软件共同点:code unsigned char Seg7Code[10] 是七段数码管共阴编码表。 Code unsigned char Seg7Code[16]= // 0 1 2 3 4 5 6 7 8 9 A b C d E F {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71}; 例一:P1.0 接一按键到 GND,键编号为‘6’,显示按键。 代码 1. 2. 3. 4. 5. 6. 7. 8. 9. #include #include “KEY.H” void main( void ) { P1_0 = 1; //作为输入引脚,必须先输出高电平 while( 1 ) //永远为真,即死循环 { if( P1_0 == 0 ) //如果按键,则为低电平 { keyPut( 6 ); //保存按键编号值为按键队列 while( P1_0 == 0 ); //如果一直按着键,则不停地执行该循环,实际是等待松键 } 10. if( keyHit() != 0 ) //如果队列中有按键 11. P2=Seg7Code[ keyGet() ]; //从队列中取出按键值,并显示在数码管上 12. 13. } } 例二:在例一中考虑按键 20ms 抖动问题。 代码 1. 2. 3. 4. 5. 6. 7. 8. 9. #include #include “KEY.H” void main( void ) { P1_0 = 1; //作为输入引脚,必须先输出高电平 while( 1 ) //永远为真,即死循环 { if( P1_0 == 0 ) //如果按键,则为低电平 { delay20ms(); //延时 20ms,跳过接下抖动 keyPut( 6 ); //保存按键编号值为按键队列 while( P1_0 == 0 ); //如果一直按着键,则不停地执行该循环,实际是等待松键 10. delay20ms(); //延时 20ms,跳过松开抖动 11. } 12. if( keyHit() != 0 ) //如果队列中有按键 13. P2=Seg7Code[ keyGet() ]; //从队列中取出按键值,并显示在数码管上 14. 15. } } 例三:在例二中考虑干扰问题。即小于 20ms 的负脉冲干扰。 代码 1. 2. 3. 4. 5. 6. #include #include “KEY.H” void main( void ) { P1_0 = 1; //作为输入引脚,必须先输出高电平 while( 1 ) //永远为真,即死循环 { if( P1_0 == 0 ) //如果按键,则为低电平 7. 8. 9. 10. { delay20ms(); //延时 20ms,跳过接下抖动 if( P1_0 == 1 ) continue; //假按键 keyPut( 6 ); //保存按键编号值为按键队列 while( P1_0 == 0 ); //如果一直按着键,则不停地执行该循环,实际是等待松键 11. delay20ms(); //延时 20ms,跳过松开抖动 12. } 13. if( keyHit() != 0 ) //如果队列中有按键 14. P2=Seg7Code[ keyGet() ]; //从队列中取出按键值,并显示在数码管上 15. 16. } } 例四:状态图编程法。通过 20ms 周期中断,扫描按键。 代码 采用晶体为 12KHz 时,指令周期为 1ms(即主频为 1KHz),这样 T0 工作在定时器方式 2,8 位自动重载。 计数值为 20,即可产生 20ms 的周期性中断,在中断服务程序中实现按键扫描 2. 3. 4. 5. 6. 7. 8. 9. #include #include “KEY.H” void main( void ) { TMOD = (TMOD & 0xf0 ) | 0x02; //不改变 T1 的工作方式,T0 为定时器方式 2 TH0 = -20; TL0=TH0; TR0=1; //计数周期为 20 个主频脉,即 20ms //先软加载一次计数值 //允许 T0 开始计数 //允许 T0 计数溢出时产生中断请求 //允许 CPU 响应中断请求 1. 10. ET0=1; 11. EA=1; 12. while( 1 ) //永远为真,即死循环 13. { 14. if( keyHit() != 0 ) //如果队列中有按键 15. P2=Seg7Code[ keyGet() ]; //从队列中取出按键值,并显示在数码管上 16. 17. } 18. void timer0int( void ) interrupt 1 //20ms;T0 的中断号为 1 19. { static unsigned char sts=0; 20. P1_0 = 1; //作为输入引脚,必须先输出高电平 } 21. switch( sts ) 22. 23. 24. { case 0: if( P1_0==0 ) sts=1; break; //按键则转入状态 1 case 1: //假按错,或干扰,回状态 0 25. if( P1_0==1 ) sts=0; 26. else{ sts=2; keyPut( 6 ); } //确实按键,键值入队列,并转状态 2 27. break; 28. case 2: if( P1_0==1 ) sts=3; break; //如果松键,则转状态 3 29. 30. 31. 32. 33. } } case 3: if( P1_0==0 ) sts=2; else sts=0; //假松键,回状态 2 //真松键,回状态 0,等待下一次按键过程 例五:状态图编程法。 代码 如果采用晶体为 12MHz 时,指令周期为 1us(即主频为 1MHz),要产生 20ms 左右的计时,则计数值达到 20000,T0 工作必须为定时器方式 1,16 位非自动重载,即可产生 20ms 的周期性中断,在中断服务程序中 实现按键扫描 2. 3. 4. 5. 6. 7. 8. 9. #include #include “KEY.H” void main( void ) { TMOD = (TMOD & 0xf0 ) | 0x01; //不改变 T1 的工作方式,T0 为定时器方式 1 TL0 = -20000; TH0 = (-20000)>>8; TR0=1; //计数周期为 20000 个主频脉,自动取低 8 位 //右移 8 位,实际上是取高 8 位 1. //允许 T0 开始计数 //允许 T0 计数溢出时产生中断请求 //允许 CPU 响应中断请求 10. ET0=1; 11. EA=1; 12. while( 1 ) //永远为真,即死循环 13. { 14. if( keyHit() != 0 ) //如果队列中有按键 15. P2=Seg7Code[ keyGet() ]; //从队列中取出按键值,并显示在数码管上 16. 17. } 18. void timer0int( void ) interrupt 1 //20ms;T0 的中断号为 1 19. { static unsigned char sts=0; 20. TL0 = -20000; 21. TH0 = (-20000)>>8; 22. P1_0 = 1; //方式 1 为软件重载 //右移 8 位,实际上是取高 8 位 } //作为输入引脚,必须先输出高电平 23. switch( sts ) 24. 25. 26. { case 0: if( P1_0==0 ) sts=1; break; //按键则转入状态 1 case 1: //假按错,或干扰,回状态 0 27. if( P1_0==1 ) sts=0; 28. else{ sts=2; keyPut( 6 ); } //确实按键,键值入队列,并转状态 2 29. break; 30. 31. 32. 33. case 2: if( P1_0==1 ) sts=3; break; //如果松键,则转状态 3 case 3: if( P1_0==0 ) sts=2; else sts=0; //假松键,回状态 2 //真松键,回状态 0,等待下一次按键过程 34. 35. } } 例六:4X4 按键。 代码 由 P1 端口的高 4 位和低 4 位构成 4X4 的矩阵键盘, 本程序只认为单键操作为合法, 同时按多键时无效。 这样下面的 X,Y 的合法值为 0x7, 0xb, 0xd, 0xe, 0xf,通过表 keyCode 影射变换可得按键值 1. 2. 3. 4. 5. 6. 7. 8. #include #include “KEY.H” unsigned char keyScan( void ) //返回 0 表示无按键,或无效按键,其它值为按键编码值 { code unsigned char keyCode[16]= /0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0 xF 9. { 0, }; 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 3, 4, 0 10. unsigned char x, y, retVal; 11. P1=0x0f; 12. x=P1&0x0f; 13. P1=0xf0; //低四位输入,高四位输出 0 //P1 输入后,清高四位,作为 X 值 //高四位输入,低四位输出 0 14. y=(P1 >> 4) & 0x0f; //P1 输入后移位到低四位,并清高四位,作为 Y 值 15. retVal = keyCode[x]*4 + keyCode[y]; //根据本公式倒算按键编码 16. if( retVal==0 ) return(0); else return( retVal-4 ); 17. } 18. //比如按键‘1’,得 X=0x7,Y=0x7,算得 retVal= 5,所以返回函数值 1。 19. //双如按键‘7’,得 X=0xb,Y=0xd,算得 retVal=11,所以返回函数值 7。 20. void main( void ) 21. { 22. TMOD = (TMOD & 0xf0 ) | 0x01; //不改变 T1 的工作方式,T0 为定时器方式 1 23. TL0 = -20000; 24. TH0 = (-20000)>>8; 25. TR0=1; 26. ET0=1; 27. EA=1; //计数周期为 20000 个主频脉,自动取低 8 位 //右移 8 位,实际上是取高 8 位 //允许 T0 开始计数 //允许 T0 计数溢出时产生中断请求 //允许 CPU 响应中断请求 28. while( 1 ) //永远为真,即死循环 29. { 30. if( keyHit() != 0 ) //如果队列中有按键 31. P2=Seg7Code[ keyGet() ]; //从队列中取出按键值,并显示在数码管上 32. 33. } 34. void timer0int( void ) interrupt 1 //20ms;T0 的中断号为 1 } 35. { static unsigned char sts=0; 36. TL0 = -20000; 37. TH0 = (-20000)>>8; 38. P1_0 = 1; //方式 1 为软件重载 //右移 8 位,实际上是取高 8 位 //作为输入引脚,必须先输出高电平 39. switch( sts ) 40. 41. 42. { case 0: if( keyScan()!=0 ) sts=1; break; //按键则转入状态 1 case 1: //假按错,或干扰,回状态 0 43. if( keyScan()==0 ) sts=0; 44. else{ sts=2; keyPut( keyScan() ); } //确实按键,键值入队列,并转状态 2 45. break; 46. 47. 48. 49. 50. 51. } } case 2: if(keyScan()==0 ) sts=3; break; //如果松键,则转状态 3 case 3: if( keyScan()!=0 ) sts=2; else sts=0; //假松键,回状态 2 //真松键,回状态 0,等待下一次按键过程 第六节: 第六节:低频频率计 实例目的:学时定时器、计数器、中断应用 说明:选用 24MHz 的晶体,主频可达 2MHz。用 T1 产生 100us 的时标,T0 作信号脉冲计数器。假设 晶体频率没有误差,而且稳定不变(实际上可达万分之一);被测信号是周期性矩形波(正负脉冲宽 度都不能小于 0.5us),频率小于 1MHz,大于 1Hz。要求测量时标 1S,测量精度为 0.1%。 解:从测量精度要求来看,当频率超过 1KHz 时,可采用 1S 时标内计数信号脉冲个数来测量信号频, 而信号频率低于 1KHz 时,可以通过测量信号的周期来求出信号频率。两种方法自动转换。 对于低于 1KHz 的信号,信号周期最小为 1ms,也就是说超过 1000us,而我们用的定时器计时脉冲周 期为 0.5us,如果定时多计或少计一个脉冲,误差为 1us,所以相对误差为 1us/1000us=0.1%。信号 周期越大,即信号频率越低,相对误差就越小。 从上面描述来看,当信号频率超过 1KHz 后,信号周期就少于 1000us,显然采用上面的测量方法,不 能达到测量精度要求,这时我们采用 1S 单位时间计数信号的脉冲个数,最少能计到 1000 个脉冲,由 于信号频率不超过 1MHz,而我们定时脉冲为 2MHz,最差多计或少计一个信号脉冲,这样相对误差为 1/1000,可见信号频率越高,相对误差越小。 信号除输入到 T1(P3.5)外,还输入到 INT1(P3.3)。 代码 //对 100us 时间间隔单位计数,即有多少个 100us。 1. 2. 3. 4. 5. 6. 7. unsigned int us100; unsigned char Second; unsigned int K64; unsigned char oldT0; //对 64K 单位计数,即有多少个 64K unsigned int oldus, oldK64, oldT1; unsigned long fcy; bit HighLow=1; //存放频率值,单位为 Hz //1:表示信号超过 1KHz;0:表示信号低于 1KHz。 8. 9. 10. void InitialHigh( void ) { IE=0; IP=0; HighLow=1; 11. TMOD = (TMOD & 0xf0) | 0x02; TH0=-200; TL0=TH0; PX0=1; T0=1; 12. 13. 14. 15. 16. 17. } 18. void InitialLow( void ) 19. { 20. IE=0; IP=0; HighLow=0; TMOD = (TMOD & 0x0f) | 0x50; TH1=0; TL1=0; T1=1; ET1=1; Us100=0; Second=0; K64=0; oldK64=0; oldT1=0; TCON |= 0x50; EA = 1; //同时置 TR0=1; TR1=1; 同时置 21. TMOD = (TMOD & 0xf0) | 0x02; TH0=-200; TL0=TH0; ET0=1; TR0=1; 22. 23. 24. 25. 26. } 27. void T0intr( void ) interrupt 1 28. { if( HighLow==0 ) ++us100; 29. else 30. if( ++us100 >= 10000 ) 31. { unsigned int tmp1, tmp2; INT1 = 1; IT1=1; EX1=1; Us100=0; Second=0; K64=0; oldK64=0; oldT1=0; EA = 1; 32. TR1=0; tmp1=(TH1<<8) + (TL1); tmp2=K64; TR1=1; 33. fcy=((tmp2-oldK64)<<16) + (tmp1-oldT1); 34. oldK64=tmp1; oldT1=tmp2; 35. Second++; 36. us100=0; 37. } 38. } 39. void T1intr( void ) interrupt 3 { ++K64; } 40. void X1intr( void ) interrupt 2 41. { static unsigned char sts=0; 42. switch( sts ) 43. { 44. case 0: sts = 1; break; 45. case 1: oldT0=TL0; oldus=us100; sts=2; break; 46. case 2: 47. { 48. 49. 50. 51. 52. } 53. 54. 55. Sts = 0; break; } unsigned char tmp1, tmp2; TR0=0; tmp1=TL0; tmp2=us100; TR0=1; fcy = 1000000L/( (tmp2-oldus)*100L + (256-tmp1)/2 ); Second ++; 56. } 57. void main( void ) 58. { 59. if( HighLow==1) InitialHigh(); else InitialLow(); 60. 61. While(1) { 62. if( Second != 0 ) 63. { 64. Second = 0; 65. //display fcy 引用前面的数码管驱动程序, 引用前面的数码管驱动程序,注意下面对 T0 中断服务程序的修改 66. { unsigned char i; 67. 68. } 69. if( HighLow==1 ) 70. if( fcy1000L ){ InitalHigh();} for( i=0; i= 10000 ) 83. { unsigned int tmp1, tmp2; 84. TR1=0; tmp1=(TH1<<8) + (TL1); tmp2=K64; TR1=1; 85. fcy=((tmp2-oldK64)<= 10 ){ ms=0; DisplayBrush(); } //1ms 数码管刷新 第七节: 第七节:电子表 单键可调电子表:主要学习编程方法。 外部中断应用,中断嵌 解:电子表分为工作状态和调整状态。平时为工作状态,按键不足一秒,接键为换屏‘S’。按键超过一 秒移位则进入调整状态‘C’,而且调整光标在秒个位开始。调整状态时,按键不足一秒为光标移动‘M’, 超过一秒则为调整读数,每 0.5 秒加一‘A’,直到松键;如果 10 秒无按键则自动回到工作状态‘W’。 如果有年、月、日、时、分、秒。四联数码管可分三屏显示,显示格式为“年月.”、“日.时.”、“分.秒”, 从小数点的位置来区分显示内容。(月份的十位数也可以用“-”和“-1”表示)。 代码 1. 2. 3. enum status = { Work, Change, Add, Move, Screen } //状态牧举 //计时和调整都是对下面时间数组 Time 进行修改 unsigned char Time[12]={0,4, 0,6, 1,0, 0,8, 4,5, 3,2}; //04 年 06 月 10 日 08 时 45 分 32 秒 4. 5. 6. 7. unsigned char cursor = 12; //指向秒个位,=0 时无光标 unsigned char YmDhMs = 3; //指向“分秒”显示 ,=0 时无屏显 static unsigned char sts = Work; 如果 cursor 不为 0,装入 DisBuf 的对应数位,按 0.2 秒周期闪烁,即设一个 0.1 秒计数器 S01,S01 为奇数时灭,S01 为偶数时亮。 8. 9. 小数点显示与 YmDhMs 变量相关。 */ 10. void DisScan( void ) //动态刷新显示时调用。没编完,针对共阴数码管,只给出控控制算法 11. { 12. //DisBuf 每个显示数据的高四位为标志,最高位 D7 为负号,D6 为小数点,D5 为闪烁 13. unsigned char tmp; 14. 15. 16. 17. 18. 19. } 20. void Display( void ) 21. { 22. if( cursor != 0 ){ YmDhMs=(cursor+3)/4; } //1..4=1; 5..8=2; 9..12=3 //根据状态进行显示 tmp = Seg7Code[?x & 0x1f ]; //设?x 为显示数据,高 3 位为控制位,将低 5 位变为七段码 if( ?x & 0x40 ) tmp |= 0x80; //添加小数点 if( ?x & 0x20 ){ if( S01 & 0x01 ) tmp=0; } //闪烁,S01 奇数时不亮 //这里没有处理负号位 //将 tmp 送出显示,并控制对应数码管动作显示 23. for( i=(YmDhMs-1)*4; i ‘9’) Dat=‘0’; } 二、 在上题的基础上,改为 2400bps,循环发送小写字母‘a’到‘z’,然后是大写字母‘A’到‘Z’。 代码 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. #include void main( void ) { TMOD = (TMOD & 0x0F) | 0x20; TH1 = -96; //注意不用倍频方式 PCON &= 0x7F; //SMOD = 0 TR1 = 1; SCON = 0x42; while( 1 ) { if( TI==1 ) { static unsigned char Dat=‘a’; SBUF = Dat; TI = 0; //If( ++Dat > ‘9’) Dat=‘0’; ++Dat; if( Dat == (‘z’+1) ) if( Dat == (‘Z’+1) ) } } Dat=‘A’; Dat=‘a’; 22. } 上述改变值时,也可以再设一变量表示当前的大小写状态,比如写成如下方式: 代码 1. 2. 3. 4. ++Dat; { static unsigned char Caps=1; if( Caps != 0 ) 5. 6. 7. 8. } if( Dat>‘Z’){ Dat=‘a’; Caps=0; } else if( Dat>‘z’){ Dat=‘A’; Caps=1; } 如下写法有错误:因为小 b 比大 Z 的编码值大,所以 Dat 总是‘a’ 代码 1. 2. 3. ++Dat; if( Dat>‘Z’){ Dat=‘a’} else if( Dat>‘z’){ Dat=‘A’} 三、 有 A 和 B 两台单片机,晶体频率分别为 13MHz 和 14MHz,在容易编程的条件下,以最快的速度进 行双工串行通信,A 给 B 循环发送大写字母从‘A’到‘Z’,B 给 A 循环发送小写字母从‘a’到‘z’,双方都用 中断方式进行收发。 解:由于晶体频率不同,又不成 2 倍关系,所以只有通信方式 1 和方式 3,由于方式 3 的帧比方式 1 多一位,显然方式 3 的有效数据(9/11)比方式 1(8/10)高,但要用方式 3 的第 9 位 TB8 来发送数 据,编程难度较大,这里方式 1 较容易编程。 在计算最高速率时,由于单方程,双未知数,又不知道波特率为多少,所以要综合各方面的条件,估 算出 A 和 B 的分频常数,分别为-13 和-14 时,速率不但相同,且为最大值。如下给出 A 机的程序: 代码 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. #include void main( void ) { TMOD = (TMOD & 0x0F) | 0x20; TH1 = -13; //注意用倍频方式 PCON |= 0x80; //SMOD = 1 TR1 = 1; SCON = 0x52; //REN = 1 ES = 1; EA = 1; while( 1 ); 12. } 13. void RS232_intr( void ) interrupt 4 14. { 15. 16. 17. 18. 19. 20. unsigned char rDat; if( RI == 1 ){ RI=0; rDat=SBUF; } if( TI==1 ) { static unsigned char tDat=‘a’; SBUF = tDat; //注意 RI 和 TI 任一位变为 1 都中断 21. 22. 23. 24. } } TI = 0; If( ++Dat > ‘z’) Dat=‘a’; 四、 多机通位 在方式 2 和方式 3,SM2 只对接收有影 响,当 SM2=1 时,只接收第 9 位等于 1 的帧(伪地址帧), 而 SM2=0 时,第 9 位不影响接收。λ 多机通信中,地址的确认与本机程序有关,所以可以实现点对点、点对组、以及通播方式的通信。λ 如果收发共用一总线,任何时刻只有一个发送源能占用总线发送数据,否则发生冲突。由此可构造无 竞争的令牌网;或者多主竞争总线网。λ 1

12,863

社区成员

发帖
与我相关
我的任务
社区描述
CSDN 下载资源悬赏专区
其他 技术论坛(原bbs)
社区管理员
  • 下载资源悬赏专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧