当前位置: 首页 > news >正文

app 网站 优势什么网站做3d模型能赚钱

app 网站 优势,什么网站做3d模型能赚钱,房地产利好消息2023,宁波企业品牌网站建设1.程序功能 在中断服务程序中增加了中断计数器#xff0c;并在主循环中通过串口输出中断次数。 2.验证 2.1手动触发8259的IR1#xff0c;高电平有效 2.2串口接收 3.测试程序 ; You may customize this and other start-up templates; ; The location of this template is…1.程序功能 在中断服务程序中增加了中断计数器并在主循环中通过串口输出中断次数。 2.验证 2.1手动触发8259的IR1高电平有效 2.2串口接收 3.测试程序 ; You may customize this and other start-up templates; ; The location of this template is c:\emu8086\inc\0_com_template.txt; ; PC16550 UART接收中断程序 LED闪烁 中断计数器 ; 硬件配置: ; - UART基地址: 100H ; - LED端口: 800H ; - 8259 PIC端口: 400H(命令), 402H(数据) ; - 中断请求线: IRQ1 (8259 IR1) ; - 中断向量号: 21H ; - 时钟频率: 18.432MHz ; - 波特率: 9600 bps (除数78H) ; ORG 100H JMP INITIALIZATION ; 跳过数据区到初始化代码; 数据段定义 BUFFER_SIZE EQU 256 ; 接收缓冲区大小 recv_buffer DB BUFFER_SIZE DUP(0) ; 接收缓冲区 buffer_head DW 0 ; 缓冲区头指针 buffer_tail DW 0 ; 缓冲区尾指针 buffer_count DW 0 ; 缓冲区中字符计数; LED控制变量 led_state DB 0FFH ; LED状态: FFH亮, 00H灭 flash_counter DW 0 ; 闪烁计数器 FLASH_INTERVAL EQU 50 ; 闪烁间隔(约0.5秒); 中断计数器 interrupt_counter DW 0 ; 中断次数计数器 last_report DW 0 ; 上次报告时间 REPORT_INTERVAL EQU 1000 ; 报告间隔(主循环次数); 16550寄存器偏移 UART_BASE EQU 100H RBR_THR EQU UART_BASE 0 ; 接收缓冲/发送保持寄存器 IER EQU UART_BASE 1 ; 中断使能寄存器 IIR_FCR EQU UART_BASE 2 ; 中断标识/FIFO控制寄存器 LCR EQU UART_BASE 3 ; 线路控制寄存器 MCR EQU UART_BASE 4 ; 调制解调器控制寄存器 LSR EQU UART_BASE 5 ; 线路状态寄存器 DLL EQU UART_BASE 0 ; 除数锁存低字节 (DLAB1) DLM EQU UART_BASE 1 ; 除数锁存高字节 (DLAB1); 8259 PIC端口 (修改为400H/402H) PIC_CMD EQU 400H PIC_DATA EQU 402H; 中断向量号 UART_IRQ EQU 21H ; IRQ1对应中断21H; ; UART初始化子程序 ; INIT_UART:; 设置波特率除数 (9600 18.432MHz)MOV DX, LCRMOV AL, 80H ; 设置DLAB1OUT DX, ALMOV DX, DLL ; 除数锁存低字节MOV AL, 78H ; 120 78H (18.432MHz / (16 * 9600))OUT DX, ALMOV DX, DLM ; 除数锁存高字节MOV AL, 00HOUT DX, AL; 设置线路参数: 8位数据, 1停止位, 无校验MOV DX, LCRMOV AL, 03H ; 8N1, DLAB0OUT DX, AL; 启用并复位FIFOMOV DX, IIR_FCRMOV AL, 0C7H ; 启用FIFO, 14字节触发点, 清除接收FIFOOUT DX, AL; 设置调制解调器控制MOV DX, MCRMOV AL, 0BH ; 启用OUT2(中断使能), RTS和DTROUT DX, AL; 启用接收数据中断MOV DX, IER; MOV AL, 01H ; 仅启用接收数据中断MOV AL, 00H ; 仅启用接收数据中断OUT DX, ALRET; ; 8259 PIC初始化 (适配400H/402H端口) ; INIT_PIC:; 保存原始中断屏蔽字MOV DX, PIC_DATAIN AL, DXMOV [original_mask], AL; 初始化8259MOV DX, PIC_CMDMOV AL, 17H ; ICW1: 边沿触发, 级联, 需要ICW4OUT DX, ALMOV DX, PIC_DATAMOV AL, UART_IRQ-1 ; ICW2: 中断向量基值OUT DX, ALMOV AL, 01H ; ICW4: 8086模式, 非缓冲, 正常EOIOUT DX, AL; 允许IRQ1中断IN AL, DXAND AL, 0FDH ; 清除IRQ1屏蔽位(11111101)OUT DX, ALRET; ; 设置中断向量 ; SET_INTERRUPT_VECTOR:CLI ; 关中断XOR AX, AXMOV ES, AX ; ES 0 (中断向量表段地址); 计算中断向量位置 (中断号 * 4)MOV AX, UART_IRQSHL AX, 2 ; 乘以4; 设置中断向量MOV DI, AXMOV AX, OFFSET UART_ISRCLDSTOSW ; 存储偏移地址MOV AX, CSSTOSW ; 存储段地址STI ; 开中断RET; ; UART中断服务程序 (IRQ1) - 增加中断计数器 ; UART_ISR PROC FARPUSH AXPUSH BXPUSH DXPUSH DS; 设置DS为当前数据段MOV AX, CSMOV DS, AX; 增加中断计数器INC [interrupt_counter]ISR_LOOP:; 检查中断源MOV DX, IIR_FCRIN AL, DXTEST AL, 01H ; 检查是否有待处理中断 (bit01表示无中断)JNZ ISR_EXIT ; 无中断则退出; 检查是否为接收数据中断TEST AL, 04H ; 检查中断类型位 (bit1-2)JNZ CHECK_OTHER ; 不是接收中断则检查其他; 处理接收数据中断MOV DX, RBR_THRIN AL, DX ; 读取接收到的字符; 将字符存入缓冲区CALL BUFFER_STORE; 继续检查其他中断JMP ISR_LOOPCHECK_OTHER:; 处理其他中断类型 (可选); 这里可以添加发送中断或错误中断的处理; ...ISR_EXIT:; 发送EOI到8259 (使用新端口)MOV AL, 20HMOV DX, PIC_CMD ; PIC_CMD 400HOUT DX, ALPOP DSPOP DXPOP BXPOP AXIRET UART_ISR ENDP; ; 串口发送字符子程序 ; 输入: AL 要发送的字符 ; SEND_CHAR:PUSH AXPUSH DX; 保存字符MOV AH, ALSEND_WAIT:; 检查发送保持寄存器是否为空MOV DX, LSRIN AL, DXTEST AL, 20H ; 检查THRE位(bit5)JZ SEND_WAIT ; 不为空则等待; 发送字符MOV DX, RBR_THRMOV AL, AHOUT DX, ALPOP DXPOP AXRET; ; LED控制子程序 ; UPDATE_LED:PUSH AXPUSH DX; 更新闪烁计数器INC [flash_counter]CMP [flash_counter], FLASH_INTERVALJB LED_DONE ; 未达到间隔; 重置计数器MOV [flash_counter], 0; 切换LED状态XOR [led_state], 0FFH; 输出到LED端口MOV DX, 800HMOV AL, [led_state]OUT DX, ALLED_DONE:POP DXPOP AXRET; ; 将字符存入缓冲区 ; BUFFER_STORE:PUSH BX; 检查缓冲区是否已满MOV BX, buffer_countCMP BX, BUFFER_SIZEJAE BUFFER_FULL ; 缓冲区已满丢弃字符; 存储字符MOV BX, buffer_tailMOV [recv_buffer BX], AL; 更新尾指针INC BXCMP BX, BUFFER_SIZEJB NO_WRAP_TAILXOR BX, BX ; 回绕到缓冲区开头NO_WRAP_TAIL:MOV buffer_tail, BX; 更新字符计数INC buffer_countBUFFER_FULL:POP BXRET; ; 从缓冲区读取字符 ; BUFFER_READ:PUSH BX; 检查缓冲区是否为空CMP buffer_count, 0JE BUFFER_EMPTY; 读取字符MOV BX, buffer_headMOV AL, [recv_buffer BX]; 更新头指针INC BXCMP BX, BUFFER_SIZEJB NO_WRAP_HEADXOR BX, BX ; 回绕到缓冲区开头NO_WRAP_HEAD:MOV buffer_head, BX; 更新字符计数DEC buffer_count; 设置成功标志STCJMP READ_DONEBUFFER_EMPTY:XOR AL, AL ; 返回0CLC ; 清除进位标志 (失败)READ_DONE:POP BXRET; ; 串口发送字符串 ; 输入: SI 字符串偏移地址 ; SEND_STRING:PUSH AXPUSH SISEND_STR_LOOP:LODSB ; 加载字符到ALOR AL, AL ; 检查是否结束(0)JZ SEND_STR_DONE ; 是则结束CALL SEND_CHAR ; 发送字符JMP SEND_STR_LOOP ; 继续发送SEND_STR_DONE:POP SIPOP AXRET; ; 将数字转换为字符串并发送 ; 输入: AX 要发送的数字 ; SEND_NUMBER:PUSH AXPUSH BXPUSH CXPUSH DXPUSH DI; 准备数字转换MOV CX, 0 ; 数字位数计数器MOV BX, 10 ; 除数; 处理0特殊情况TEST AX, AXJNZ CONVERT_LOOPMOV AL, 0CALL SEND_CHARJMP SEND_NUM_DONECONVERT_LOOP:XOR DX, DX ; 清零DXDIV BX ; AX AX/10, DX 余数ADD DL, 0 ; 转换为ASCIIPUSH DX ; 保存数字字符INC CX ; 增加位数计数TEST AX, AX ; 检查商是否为0JNZ CONVERT_LOOP ; 不为0则继续SEND_LOOP:POP AX ; 获取数字字符CALL SEND_CHAR ; 发送字符LOOP SEND_LOOP ; 循环发送所有数字SEND_NUM_DONE:POP DIPOP DXPOP CXPOP BXPOP AXRET; ; 报告中断计数器状态 ; REPORT_COUNTER:PUSH AXPUSH SI; 发送前缀消息MOV SI, OFFSET counter_msgCALL SEND_STRING; 发送中断计数MOV AX, [interrupt_counter]CALL SEND_NUMBER; 发送后缀消息MOV SI, OFFSET counter_endCALL SEND_STRINGPOP SIPOP AXRET; ; 初始化系统 ; INIT_SYSTEM:; 初始化缓冲区MOV buffer_head, 0MOV buffer_tail, 0MOV buffer_count, 0; 初始化LED状态MOV [led_state], 0FFH ; 初始状态: 亮MOV [flash_counter], 0; 初始化LED端口MOV DX, 800HMOV AL, [led_state]OUT DX, AL; 初始化计数器MOV [interrupt_counter], 0MOV [last_report], 0RET; ; 主初始化程序 ; INITIALIZATION:; 初始化系统CALL INIT_SYSTEM; 初始化UARTCALL INIT_UART; 初始化8259 PICCALL INIT_PIC; 设置中断向量CALL SET_INTERRUPT_VECTOR; 通过串口发送启动消息MOV SI, OFFSET startup_msgCALL SEND_STRING; ; 主程序循环 ; MAIN_LOOP:; 更新LED状态CALL UPDATE_LED; 更新报告计数器INC [last_report]CMP [last_report], REPORT_INTERVALJB SKIP_REPORT; 重置报告计数器MOV [last_report], 0; 报告中断计数CALL REPORT_COUNTERSKIP_REPORT:; 检查是否有接收到的字符CALL BUFFER_READJNC NO_DATA ; 无数据则继续等待; 通过串口回显接收到的字符CALL SEND_CHAR; 检查是否为退出命令;CMP AL, 1BH ; ESC键;JE EXIT_PROGRAMNO_DATA:; 短延时以控制闪烁频率MOV CX, 3000 ; 延时参数 DELAY_SHORT:LOOP DELAY_SHORTJMP MAIN_LOOP; ; 退出程序 ; EXIT_PROGRAM:; 发送最终中断计数报告CALL REPORT_COUNTER; 恢复原始中断屏蔽字MOV DX, PIC_DATAMOV AL, [original_mask]OUT DX, AL; 禁用UART中断MOV DX, IERMOV AL, 00HOUT DX, AL; 关闭LEDMOV DX, 800HMOV AL, 00HOUT DX, AL; 通过串口发送退出消息MOV SI, OFFSET exit_msgCALL SEND_STRING; 返回DOSMOV AH, 4CHINT 21H; ; 数据区 ; original_mask DB 0 ; 原始8259中断屏蔽字 startup_msg DB 0Dh, 0Ah, UART Interrupt Counter Program Started, 0Dh, 0AhDB Press ESC to exit..., 0Dh, 0Ah, 0 exit_msg DB 0Dh, 0Ah, Program terminated., 0Dh, 0Ah, 0 counter_msg DB 0Dh, 0Ah, Interrupt count: , 0 counter_end DB times, 0Dh, 0Ah, 0 end_flag DB 55h,55h,55h,55h,55hEND INITIALIZATION
http://www.hkea.cn/news/14430051/

相关文章:

  • 建设金融网站做电商如何起步
  • 广东深圳住房和城乡建设部网站室内装修免费咨询
  • 做网站软件ps十大不收费的软件2023年
  • 网站开发上线流程h5个人博客网站模板
  • 营销型网站的布局wordpress链接提交百度
  • 网站建设广告平台推广加强网站安全建设说明报告范文
  • 官方网站的域名wordpress图片清理插件下载
  • 科技有限公司属于什么企业类型seo入门教程网盘
  • 数据网站建设哪个好管理网站模板下载
  • wordpress上传设置南京网站关键词优化
  • 网站开发需要哪些技术人员wordpress总是404
  • 南宁网站建公司电话号码wordpress加载本地字体
  • 相对于网站根目录的的绝对路径百度allin 人工智能
  • 网站文件命名销售成功案例分享
  • 网站后台实际访问地址与注册的域名地址不同那种漂亮的网站怎么做的
  • 网站如何做搜索引擎中国建设银行湖北省分行网站
  • 怎么创建网站平台赚钱网站没有ftp 怎么推广
  • 婚纱摄影网站源码东莞怎样做网站建设
  • 学仿网站公司网站建设外包流程
  • 禁止wordpress网站上传图片时自动生成三张图片方法公众号制作一个需要多少钱
  • 直播网站怎么做啊摄影化妆艺术学校网站源码
  • 域名交易网站源代码下载海南所有的网站建设类公司
  • 响应式网站 手机站微商引流的最快方法是什么
  • html5 metro风格网站模板电商该怎么做起
  • 凉州区住房城乡建设局网站什么是网站建设流程
  • 网站建设收费标准方案电子商务网站开发的基本要求
  • asp网站可运行jsp吗做网站流量是什么
  • 百度做网站推广多少钱厦门建设局林德志
  • 深圳专业建网站公司网络营销试题库及答案
  • 网站设计的英文镇江做网站哪家公司好